From 0ee1c64959e339387b25dfb83dc3fce6bff7e548 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Tue, 8 Nov 2022 17:14:01 -0300 Subject: [PATCH 001/220] fail-on: rework feature This adds a new `fail_on` config option that can be changed with a mutually exclusive group of argument flags. It also decouples the exclude_* and fail_on flags, so you can do things like `fail_on: pedantic` while disabling optimization findings. Additionally, this adds some new code to detect the old-style config options, migrate their settings, and alert the user. Fixes #1458 --- slither/__main__.py | 78 +++++++++++++++++++---------------- slither/utils/command_line.py | 50 ++++++++++++++++++++-- 2 files changed, 88 insertions(+), 40 deletions(-) diff --git a/slither/__main__.py b/slither/__main__.py index 70357586e..a2402fb60 100644 --- a/slither/__main__.py +++ b/slither/__main__.py @@ -28,6 +28,8 @@ from slither.utils.output import output_to_json, output_to_zip, output_to_sarif, from slither.utils.output_capture import StandardOutputCapture from slither.utils.colors import red, set_colorization_enabled from slither.utils.command_line import ( + FailOnLevel, + migrate_config_options, output_detectors, output_results_to_markdown, output_detectors_json, @@ -220,22 +222,22 @@ def choose_detectors( detectors_to_run = sorted(detectors_to_run, key=lambda x: x.IMPACT) return detectors_to_run - if args.exclude_optimization and not args.fail_pedantic: + if args.exclude_optimization: detectors_to_run = [ d for d in detectors_to_run if d.IMPACT != DetectorClassification.OPTIMIZATION ] - if args.exclude_informational and not args.fail_pedantic: + if args.exclude_informational: detectors_to_run = [ d for d in detectors_to_run if d.IMPACT != DetectorClassification.INFORMATIONAL ] - if args.exclude_low and not args.fail_low: + if args.exclude_low: detectors_to_run = [d for d in detectors_to_run if d.IMPACT != DetectorClassification.LOW] - if args.exclude_medium and not args.fail_medium: + if args.exclude_medium: detectors_to_run = [ d for d in detectors_to_run if d.IMPACT != DetectorClassification.MEDIUM ] - if args.exclude_high and not args.fail_high: + if args.exclude_high: detectors_to_run = [d for d in detectors_to_run if d.IMPACT != DetectorClassification.HIGH] if args.detectors_to_exclude: detectors_to_run = [ @@ -401,41 +403,44 @@ def parse_args( default=defaults_flag_in_config["exclude_high"], ) - group_detector.add_argument( + fail_on_group = group_detector.add_mutually_exclusive_group() + fail_on_group.add_argument( "--fail-pedantic", - help="Return the number of findings in the exit code", - action="store_true", - default=defaults_flag_in_config["fail_pedantic"], + help="Fail if any findings are detected", + action="store_const", + dest="fail_on", + const=FailOnLevel.PEDANTIC, ) - - group_detector.add_argument( - "--no-fail-pedantic", - help="Do not return the number of findings in the exit code. Opposite of --fail-pedantic", - dest="fail_pedantic", - action="store_false", - required=False, - ) - - group_detector.add_argument( + fail_on_group.add_argument( "--fail-low", - help="Fail if low or greater impact finding is detected", - action="store_true", - default=defaults_flag_in_config["fail_low"], + help="Fail if any low or greater impact findings are detected", + action="store_const", + dest="fail_on", + const=FailOnLevel.LOW, ) - - group_detector.add_argument( + fail_on_group.add_argument( "--fail-medium", - help="Fail if medium or greater impact finding is detected", - action="store_true", - default=defaults_flag_in_config["fail_medium"], + help="Fail if any medium or greater impact findings are detected", + action="store_const", + dest="fail_on", + const=FailOnLevel.MEDIUM, ) - - group_detector.add_argument( + fail_on_group.add_argument( "--fail-high", - help="Fail if high impact finding is detected", - action="store_true", - default=defaults_flag_in_config["fail_high"], + help="Fail if any high impact findings are detected", + action="store_const", + dest="fail_on", + const=FailOnLevel.HIGH, + ) + fail_on_group.add_argument( + "--fail-none", + "--no-fail-pedantic", + help="Do not return the number of findings in the exit code", + action="store_const", + dest="fail_on", + const=FailOnLevel.NONE, ) + fail_on_group.set_defaults(fail_on=FailOnLevel.PEDANTIC) group_detector.add_argument( "--show-ignored-findings", @@ -910,17 +915,18 @@ def main_impl( stats = pstats.Stats(cp).sort_stats("cumtime") stats.print_stats() - if args.fail_high: + fail_on = FailOnLevel(args.fail_on) + if fail_on == FailOnLevel.HIGH: fail_on_detection = any(result["impact"] == "High" for result in results_detectors) - elif args.fail_medium: + elif fail_on == FailOnLevel.MEDIUM: fail_on_detection = any( result["impact"] in ["Medium", "High"] for result in results_detectors ) - elif args.fail_low: + elif fail_on == FailOnLevel.LOW: fail_on_detection = any( result["impact"] in ["Low", "Medium", "High"] for result in results_detectors ) - elif args.fail_pedantic: + elif fail_on == FailOnLevel.PEDANTIC: fail_on_detection = bool(results_detectors) else: fail_on_detection = False diff --git a/slither/utils/command_line.py b/slither/utils/command_line.py index c2fef5eca..a650960f5 100644 --- a/slither/utils/command_line.py +++ b/slither/utils/command_line.py @@ -1,4 +1,5 @@ import argparse +import enum import json import os import re @@ -27,6 +28,15 @@ JSON_OUTPUT_TYPES = [ "list-printers", ] + +class FailOnLevel(enum.Enum): + PEDANTIC = "pedantic" + LOW = "low" + MEDIUM = "medium" + HIGH = "high" + NONE = "none" + + # Those are the flags shared by the command line and the config file defaults_flag_in_config = { "detectors_to_run": "all", @@ -38,10 +48,7 @@ defaults_flag_in_config = { "exclude_low": False, "exclude_medium": False, "exclude_high": False, - "fail_pedantic": True, - "fail_low": False, - "fail_medium": False, - "fail_high": False, + "fail_on": FailOnLevel.PEDANTIC.value, "json": None, "sarif": None, "json-types": ",".join(DEFAULT_JSON_OUTPUT_TYPES), @@ -57,6 +64,13 @@ defaults_flag_in_config = { **DEFAULTS_FLAG_IN_CONFIG_CRYTIC_COMPILE, } +deprecated_flags = { + "fail_pedantic": True, + "fail_low": False, + "fail_medium": False, + "fail_high": False, +} + def read_config_file(args: argparse.Namespace) -> None: # No config file was provided as an argument @@ -73,6 +87,12 @@ def read_config_file(args: argparse.Namespace) -> None: with open(args.config_file, encoding="utf8") as f: config = json.load(f) for key, elem in config.items(): + if key in deprecated_flags: + logger.info( + yellow(f"{args.config_file} has a deprecated key: {key} : {elem}") + ) + migrate_config_options(args, key, elem) + continue if key not in defaults_flag_in_config: logger.info( yellow(f"{args.config_file} has an unknown key: {key} : {elem}") @@ -87,6 +107,28 @@ def read_config_file(args: argparse.Namespace) -> None: logger.error(yellow("Falling back to the default settings...")) +def migrate_config_options(args: argparse.Namespace, key: str, elem): + if key.startswith("fail_") and getattr(args, "fail_on") == defaults_flag_in_config["fail_on"]: + if key == "fail_pedantic": + pedantic_setting = elem + fail_on = pedantic_setting and FailOnLevel.PEDANTIC or FailOnLevel.NONE + setattr(args, "fail_on", fail_on) + logger.info( + "Migrating fail_pedantic: {} as fail_on: {}".format(pedantic_setting, fail_on.value) + ) + elif key == "fail_low" and elem == True: + logger.info("Migrating fail_low: true -> fail_on: low") + setattr(args, "fail_on", FailOnLevel.LOW) + elif key == "fail_medium" and elem == True: + logger.info("Migrating fail_medium: true -> fail_on: medium") + setattr(args, "fail_on", FailOnLevel.MEDIUM) + elif key == "fail_high" and elem == True: + logger.info("Migrating fail_high: true -> fail_on: high") + setattr(args, "fail_on", FailOnLevel.HIGH) + else: + logger.warn(yellow("Key {} was deprecated but no migration was provided".format(key))) + + def output_to_markdown( detector_classes: List[Type[AbstractDetector]], printer_classes: List[Type[AbstractPrinter]], From 0e2f085d82259e4761242dd298cb755e08fa80ea Mon Sep 17 00:00:00 2001 From: Simone Date: Thu, 23 Feb 2023 13:25:03 +0100 Subject: [PATCH 002/220] Support user defined operators --- slither/core/solidity_types/type_alias.py | 5 +- .../declarations/using_for_top_level.py | 43 +++++++++----- .../expressions/expression_parsing.py | 58 +++++++++++++++---- 3 files changed, 79 insertions(+), 27 deletions(-) diff --git a/slither/core/solidity_types/type_alias.py b/slither/core/solidity_types/type_alias.py index 5b9ea0a37..a9010c7d9 100644 --- a/slither/core/solidity_types/type_alias.py +++ b/slither/core/solidity_types/type_alias.py @@ -1,10 +1,11 @@ -from typing import TYPE_CHECKING, Tuple +from typing import TYPE_CHECKING, Tuple, Dict from slither.core.children.child_contract import ChildContract from slither.core.declarations.top_level import TopLevel from slither.core.solidity_types import Type, ElementaryType if TYPE_CHECKING: + from slither.core.declarations.function_top_level import FunctionTopLevel from slither.core.declarations import Contract from slither.core.scope.scope import FileScope @@ -43,6 +44,8 @@ class TypeAliasTopLevel(TypeAlias, TopLevel): def __init__(self, underlying_type: Type, name: str, scope: "FileScope") -> None: super().__init__(underlying_type, name) self.file_scope: "FileScope" = scope + # operators redefined + self.operators: Dict[str, "FunctionTopLevel"] = {} def __str__(self) -> str: return self.name diff --git a/slither/solc_parsing/declarations/using_for_top_level.py b/slither/solc_parsing/declarations/using_for_top_level.py index b16fadc40..e20fb3bcf 100644 --- a/slither/solc_parsing/declarations/using_for_top_level.py +++ b/slither/solc_parsing/declarations/using_for_top_level.py @@ -55,22 +55,29 @@ class UsingForTopLevelSolc(CallerContextExpression): # pylint: disable=too-few- self._propagate_global(type_name) else: for f in self._functions: - full_name_split = f["function"]["name"].split(".") - if len(full_name_split) == 1: + # User defined operator + if "operator" in f: # Top level function - function_name: str = full_name_split[0] - self._analyze_top_level_function(function_name, type_name) - elif len(full_name_split) == 2: - # It can be a top level function behind an aliased import - # or a library function - first_part = full_name_split[0] - function_name = full_name_split[1] - self._check_aliased_import(first_part, function_name, type_name) + function_name: str = f["definition"]["name"] + operator: str = f["operator"] + self._analyze_operator(operator, function_name, type_name) else: - # MyImport.MyLib.a we don't care of the alias - library_name_str = full_name_split[1] - function_name = full_name_split[2] - self._analyze_library_function(library_name_str, function_name, type_name) + full_name_split = f["function"]["name"].split(".") + if len(full_name_split) == 1: + # Top level function + function_name: str = full_name_split[0] + self._analyze_top_level_function(function_name, type_name) + elif len(full_name_split) == 2: + # It can be a top level function behind an aliased import + # or a library function + first_part = full_name_split[0] + function_name = full_name_split[1] + self._check_aliased_import(first_part, function_name, type_name) + else: + # MyImport.MyLib.a we don't care of the alias + library_name_str = full_name_split[1] + function_name = full_name_split[2] + self._analyze_library_function(library_name_str, function_name, type_name) def _check_aliased_import( self, @@ -96,6 +103,14 @@ class UsingForTopLevelSolc(CallerContextExpression): # pylint: disable=too-few- self._propagate_global(type_name) break + def _analyze_operator( + self, operator: str, function_name: str, type_name: TypeAliasTopLevel + ) -> None: + for tl_function in self.compilation_unit.functions_top_level: + if tl_function.name == function_name: + type_name.operators[operator] = tl_function + break + def _analyze_library_function( self, library_name: str, diff --git a/slither/solc_parsing/expressions/expression_parsing.py b/slither/solc_parsing/expressions/expression_parsing.py index ea433a921..0727d2a16 100644 --- a/slither/solc_parsing/expressions/expression_parsing.py +++ b/slither/solc_parsing/expressions/expression_parsing.py @@ -1,6 +1,6 @@ import logging import re -from typing import Union, Dict, TYPE_CHECKING +from typing import Union, Dict, TYPE_CHECKING, List, Any import slither.core.expressions.type_conversion from slither.core.declarations.solidity_variables import ( @@ -236,6 +236,24 @@ if TYPE_CHECKING: pass +def _user_defined_op_call( + caller_context: CallerContextExpression, src, function_id: int, args: List[Any], type_call: str +) -> CallExpression: + var, was_created = find_variable(None, caller_context, function_id) + + if was_created: + var.set_offset(src, caller_context.compilation_unit) + + identifier = Identifier(var) + identifier.set_offset(src, caller_context.compilation_unit) + + var.references.append(identifier.source_mapping) + + call = CallExpression(identifier, args, type_call) + call.set_offset(src, caller_context.compilation_unit) + return call + + def parse_expression(expression: Dict, caller_context: CallerContextExpression) -> "Expression": # pylint: disable=too-many-nested-blocks,too-many-statements """ @@ -274,16 +292,24 @@ def parse_expression(expression: Dict, caller_context: CallerContextExpression) if name == "UnaryOperation": if is_compact_ast: attributes = expression - else: - attributes = expression["attributes"] - assert "prefix" in attributes - operation_type = UnaryOperationType.get_type(attributes["operator"], attributes["prefix"]) - - if is_compact_ast: expression = parse_expression(expression["subExpression"], caller_context) else: + attributes = expression["attributes"] assert len(expression["children"]) == 1 expression = parse_expression(expression["children"][0], caller_context) + assert "prefix" in attributes + + # Use of user defined operation + if "function" in attributes: + return _user_defined_op_call( + caller_context, + src, + attributes["function"], + [expression], + attributes["typeDescriptions"]["typeString"], + ) + + operation_type = UnaryOperationType.get_type(attributes["operator"], attributes["prefix"]) unary_op = UnaryOperation(expression, operation_type) unary_op.set_offset(src, caller_context.compilation_unit) return unary_op @@ -291,17 +317,25 @@ def parse_expression(expression: Dict, caller_context: CallerContextExpression) if name == "BinaryOperation": if is_compact_ast: attributes = expression - else: - attributes = expression["attributes"] - operation_type = BinaryOperationType.get_type(attributes["operator"]) - - if is_compact_ast: left_expression = parse_expression(expression["leftExpression"], caller_context) right_expression = parse_expression(expression["rightExpression"], caller_context) else: assert len(expression["children"]) == 2 + attributes = expression["attributes"] left_expression = parse_expression(expression["children"][0], caller_context) right_expression = parse_expression(expression["children"][1], caller_context) + + # Use of user defined operation + if "function" in attributes: + return _user_defined_op_call( + caller_context, + src, + attributes["function"], + [left_expression, right_expression], + attributes["typeDescriptions"]["typeString"], + ) + + operation_type = BinaryOperationType.get_type(attributes["operator"]) binary_op = BinaryOperation(left_expression, right_expression, operation_type) binary_op.set_offset(src, caller_context.compilation_unit) return binary_op From 5edc3c280e9683e42d8beff5cbe23e5f32529015 Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 10 Mar 2023 21:41:16 +0100 Subject: [PATCH 003/220] Add tests --- ...ed_operators-0.8.19.sol-0.8.19-compact.zip | Bin 0 -> 5844 bytes ...d_operators-0.8.19.sol-0.8.19-compact.json | 13 +++++ .../user_defined_operators-0.8.19.sol | 48 +++++++++++++++++ tests/test_ast_parsing.py | 1 + tests/test_features.py | 51 ++++++++++++++++++ 5 files changed, 113 insertions(+) create mode 100644 tests/ast-parsing/compile/user_defined_operators-0.8.19.sol-0.8.19-compact.zip create mode 100644 tests/ast-parsing/expected/user_defined_operators-0.8.19.sol-0.8.19-compact.json create mode 100644 tests/ast-parsing/user_defined_operators-0.8.19.sol diff --git a/tests/ast-parsing/compile/user_defined_operators-0.8.19.sol-0.8.19-compact.zip b/tests/ast-parsing/compile/user_defined_operators-0.8.19.sol-0.8.19-compact.zip new file mode 100644 index 0000000000000000000000000000000000000000..7159a1486165e875e77b28cb8132456dbea5a367 GIT binary patch literal 5844 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\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: RETURN 2\n\"];\n}\n", + "add_op(Int,Int)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n", + "lib_call(Int)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n", + "neg_usertype(Int)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: RETURN 2\n\"];\n}\n", + "neg_int(int256)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n", + "eq_op(Int,Int)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/ast-parsing/user_defined_operators-0.8.19.sol b/tests/ast-parsing/user_defined_operators-0.8.19.sol new file mode 100644 index 000000000..e4df845fb --- /dev/null +++ b/tests/ast-parsing/user_defined_operators-0.8.19.sol @@ -0,0 +1,48 @@ +pragma solidity ^0.8.19; + +type Int is int; +using {add as +, eq as ==, add, neg as -, Lib.f} for Int global; + +function add(Int a, Int b) pure returns (Int) { + return Int.wrap(Int.unwrap(a) + Int.unwrap(b)); +} + +function eq(Int a, Int b) pure returns (bool) { + return true; +} + +function neg(Int a) pure returns (Int) { + return a; +} + +library Lib { + function f(Int r) internal {} +} + +contract T { + function add_function_call(Int b, Int c) public returns(Int) { + Int res = add(b,c); + return res; + } + + function add_op(Int b, Int c) public returns(Int) { + return b + c; + } + + function lib_call(Int b) public { + return b.f(); + } + + function neg_usertype(Int b) public returns(Int) { + Int res = -b; + return res; + } + + function neg_int(int b) public returns(int) { + return -b; + } + + function eq_op(Int b, Int c) public returns(bool) { + return b == c; + } +} diff --git a/tests/test_ast_parsing.py b/tests/test_ast_parsing.py index c783f827f..945fde505 100644 --- a/tests/test_ast_parsing.py +++ b/tests/test_ast_parsing.py @@ -444,6 +444,7 @@ ALL_TESTS = [ Test("yul-top-level-0.8.0.sol", ["0.8.0"]), Test("complex_imports/import_aliases_issue_1319/test.sol", ["0.5.12"]), Test("yul-state-constant-access.sol", ["0.8.16"]), + Test("user_defined_operators-0.8.19.sol", ["0.8.19"]), ] # create the output folder if needed try: diff --git a/tests/test_features.py b/tests/test_features.py index d29a5eb6a..db0314b3f 100644 --- a/tests/test_features.py +++ b/tests/test_features.py @@ -160,3 +160,54 @@ def test_arithmetic_usage() -> None: assert { f.source_mapping.content_hash for f in unchecked_arithemtic_usage(slither.contracts[0]) } == {"2b4bc73cf59d486dd9043e840b5028b679354dd9", "e4ecd4d0fda7e762d29aceb8425f2c5d4d0bf962"} + + +def test_user_defined_operators() -> None: + solc_select.switch_global_version("0.8.19", always_install=True) + slither = Slither("./tests/ast-parsing/user_defined_operators-0.8.19.sol") + contract_t = slither.get_contract_from_name("T")[0] + add_function_call = contract_t.get_function_from_full_name("add_function_call(Int,Int)") + ok = False + for ir in add_function_call.all_slithir_operations(): + if isinstance(ir, InternalCall) and ir.function_name == "add": + ok = True + if not ok: + assert False + + add_op = contract_t.get_function_from_full_name("add_op(Int,Int)") + ok = False + for ir in add_op.all_slithir_operations(): + if isinstance(ir, InternalCall) and ir.function_name == "add": + ok = True + if not ok: + assert False + + lib_call = contract_t.get_function_from_full_name("lib_call(Int)") + ok = False + for ir in lib_call.all_slithir_operations(): + if isinstance(ir, LibraryCall) and ir.destination == "Lib" and ir.function_name == "f": + ok = True + if not ok: + assert False + + neg_usertype = contract_t.get_function_from_full_name("neg_usertype(Int)") + ok = False + for ir in neg_usertype.all_slithir_operations(): + if isinstance(ir, InternalCall) and ir.function_name == "neg": + ok = True + if not ok: + assert False + + neg_int = contract_t.get_function_from_full_name("neg_int(int256)") + ok = True + for ir in neg_int.all_slithir_operations(): + if isinstance(ir, InternalCall): + ok = False + if not ok: + assert False + + eq_op = contract_t.get_function_from_full_name("eq_op(Int,Int)") + for ir in eq_op.all_slithir_operations(): + if isinstance(ir, InternalCall) and ir.function_name == "eq": + return + assert False From 64abf06e0a8ef3e74fcdcc7c0956921dbc2cb4c4 Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 10 Mar 2023 21:53:32 +0100 Subject: [PATCH 004/220] Run pylint --- tests/test_features.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_features.py b/tests/test_features.py index 297023b4c..c6b670d35 100644 --- a/tests/test_features.py +++ b/tests/test_features.py @@ -203,7 +203,7 @@ def test_using_for_global_collision() -> None: sl = Slither(compilation) _run_all_detectors(sl) - +# pylint: disable=too-many-branches def test_user_defined_operators() -> None: solc_select.switch_global_version("0.8.19", always_install=True) slither = Slither("./tests/ast-parsing/user_defined_operators-0.8.19.sol") From cc650f5683490342e38b92d6e681d44b07e706e5 Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 10 Mar 2023 22:04:50 +0100 Subject: [PATCH 005/220] Black --- tests/test_features.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_features.py b/tests/test_features.py index c6b670d35..748f1df9e 100644 --- a/tests/test_features.py +++ b/tests/test_features.py @@ -203,6 +203,7 @@ def test_using_for_global_collision() -> None: sl = Slither(compilation) _run_all_detectors(sl) + # pylint: disable=too-many-branches def test_user_defined_operators() -> None: solc_select.switch_global_version("0.8.19", always_install=True) From 3a1c7cb065d91e47a3788a6d34ff842c78d05b55 Mon Sep 17 00:00:00 2001 From: Yordan Miladinov Date: Mon, 6 Mar 2023 05:16:58 +0200 Subject: [PATCH 006/220] incorrect-equality: do not check addresses --- .../statements/incorrect_strict_equality.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/slither/detectors/statements/incorrect_strict_equality.py b/slither/detectors/statements/incorrect_strict_equality.py index bc7b0cebe..bd34d61b1 100644 --- a/slither/detectors/statements/incorrect_strict_equality.py +++ b/slither/detectors/statements/incorrect_strict_equality.py @@ -72,6 +72,14 @@ contract Crowdsale{ def is_direct_comparison(ir: Operation) -> bool: return isinstance(ir, Binary) and ir.type == BinaryType.EQUAL + @staticmethod + def is_not_comparing_addresses(ir: Binary) -> bool: + """ + Comparing addresses strictly should not be flagged. + """ + addr = ElementaryType("address") + return ir.variable_left.type != addr or ir.variable_right.type != addr + @staticmethod def is_any_tainted( variables: List[ @@ -145,7 +153,12 @@ contract Crowdsale{ for ir in node.irs_ssa: # Filter to only tainted equality (==) comparisons - if self.is_direct_comparison(ir) and self.is_any_tainted(ir.used, taints, func): + if ( + self.is_direct_comparison(ir) + and self.is_not_comparing_addresses(ir) + and self.is_any_tainted(ir.used, taints, func) + ): + # if func not in results: results[func] = [] results[func].append(node) From 3cdb23c584f48582593f2ccd22491579fc190729 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 16 Mar 2023 21:42:26 -0500 Subject: [PATCH 007/220] upgrade-prettytable, use colored table --- setup.py | 2 +- slither/utils/myprettytable.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 0d26167b3..ccab5a21a 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ setup( python_requires=">=3.8", install_requires=[ "packaging", - "prettytable>=0.7.2", + "prettytable>=3.3.0", "pycryptodome>=3.4.6", # "crytic-compile>=0.3.0", "crytic-compile@git+https://github.com/crytic/crytic-compile.git@master#egg=crytic-compile", diff --git a/slither/utils/myprettytable.py b/slither/utils/myprettytable.py index a1dfd7ac0..60eed182e 100644 --- a/slither/utils/myprettytable.py +++ b/slither/utils/myprettytable.py @@ -1,6 +1,6 @@ from typing import List, Dict -from prettytable import PrettyTable +from prettytable.colortable import ColorTable, Themes class MyPrettyTable: @@ -11,8 +11,8 @@ class MyPrettyTable: def add_row(self, row: List[str]) -> None: self._rows.append(row) - def to_pretty_table(self) -> PrettyTable: - table = PrettyTable(self._field_names) + def to_pretty_table(self) -> ColorTable: + table = ColorTable(self._field_names, theme=Themes.OCEAN) for row in self._rows: table.add_row(row) return table From 0ff95eb876ba797d2bbdb9492da5aa1713bca1db Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Fri, 17 Mar 2023 08:34:29 -0500 Subject: [PATCH 008/220] add tx.gasprice to generic taints --- slither/analyses/data_dependency/data_dependency.py | 1 + 1 file changed, 1 insertion(+) diff --git a/slither/analyses/data_dependency/data_dependency.py b/slither/analyses/data_dependency/data_dependency.py index b2a154672..7750fc99a 100644 --- a/slither/analyses/data_dependency/data_dependency.py +++ b/slither/analyses/data_dependency/data_dependency.py @@ -107,6 +107,7 @@ GENERIC_TAINT = { SolidityVariableComposed("msg.value"), SolidityVariableComposed("msg.data"), SolidityVariableComposed("tx.origin"), + SolidityVariableComposed("tx.gasprice"), } From 6a3ae82b56592769fa426fc8d264292f7bf16c91 Mon Sep 17 00:00:00 2001 From: webthethird Date: Sat, 25 Mar 2023 17:50:18 -0500 Subject: [PATCH 009/220] Add option to skip unrolling user-defined-types --- slither/utils/code_generation.py | 48 +++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index 951bf4702..ae03e2090 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -2,12 +2,14 @@ from typing import TYPE_CHECKING, Optional from slither.utils.type import convert_type_for_solidity_signature_to_string +from slither.core.solidity_types.user_defined_type import UserDefinedType +from slither.core.declarations import Structure, Enum if TYPE_CHECKING: - from slither.core.declarations import FunctionContract, Structure, Contract + from slither.core.declarations import FunctionContract, Contract, CustomErrorContract -def generate_interface(contract: "Contract") -> str: +def generate_interface(contract: "Contract", unroll_structs: bool = True) -> str: """ Generates code for a Solidity interface to the contract. Args: @@ -22,13 +24,7 @@ def generate_interface(contract: "Contract") -> str: name, args = event.signature interface += f" event {name}({', '.join(args)});\n" for error in contract.custom_errors: - args = [ - convert_type_for_solidity_signature_to_string(arg.type) - .replace("(", "") - .replace(")", "") - for arg in error.parameters - ] - interface += f" error {error.name}({', '.join(args)});\n" + interface += generate_custom_error_interface(error, unroll_structs) for enum in contract.enums: interface += f" enum {enum.name} {{ {', '.join(enum.values)} }}\n" for struct in contract.structures: @@ -38,12 +34,16 @@ def generate_interface(contract: "Contract") -> str: for func in contract.functions_entry_points: if func.is_constructor or func.is_fallback or func.is_receive: continue - interface += f" function {generate_interface_function_signature(func)};\n" + interface += ( + f" function {generate_interface_function_signature(func, unroll_structs)};\n" + ) interface += "}\n\n" return interface -def generate_interface_function_signature(func: "FunctionContract") -> Optional[str]: +def generate_interface_function_signature( + func: "FunctionContract", unroll_structs: bool = True +) -> Optional[str]: """ Generates a string of the form: func_name(type1,type2) external {payable/view/pure} returns (type3) @@ -56,7 +56,7 @@ def generate_interface_function_signature(func: "FunctionContract") -> Optional[ Returns None if the function is private or internal, or is a constructor/fallback/receive. """ - name, parameters, return_vars = func.signature + name, _, _ = func.signature if ( func not in func.contract.functions_entry_points or func.is_constructor @@ -69,16 +69,24 @@ def generate_interface_function_signature(func: "FunctionContract") -> Optional[ payable = " payable" if func.payable else "" returns = [ convert_type_for_solidity_signature_to_string(ret.type).replace("(", "").replace(")", "") + if unroll_structs + else f"{str(ret.type.type)} memory" + if isinstance(ret.type, UserDefinedType) and isinstance(ret.type.type, (Structure, Enum)) + else str(ret.type) for ret in func.returns ] parameters = [ convert_type_for_solidity_signature_to_string(param.type).replace("(", "").replace(")", "") + if unroll_structs + else f"{str(param.type.type)} memory" + if isinstance(param.type, UserDefinedType) and isinstance(param.type.type, (Structure, Enum)) + else str(param.type) for param in func.parameters ] _interface_signature_str = ( name + "(" + ",".join(parameters) + ") external" + payable + pure + view ) - if len(return_vars) > 0: + if len(returns) > 0: _interface_signature_str += " returns (" + ",".join(returns) + ")" return _interface_signature_str @@ -102,3 +110,17 @@ def generate_struct_interface_str(struct: "Structure") -> str: definition += f" {elem.type} {elem.name};\n" definition += " }\n" return definition + + +def generate_custom_error_interface(error: "CustomErrorContract", unroll_structs: bool = True) -> str: + args = [ + convert_type_for_solidity_signature_to_string(arg.type) + .replace("(", "") + .replace(")", "") + if unroll_structs + else str(arg.type.type) + if isinstance(arg.type, UserDefinedType) and isinstance(arg.type.type, (Structure, Enum)) + else str(arg.type) + for arg in error.parameters + ] + return f" error {error.name}({', '.join(args)});\n" From b5cd4642e0a55fc06e1f4535d0512f2d8812b27a Mon Sep 17 00:00:00 2001 From: webthethird Date: Sat, 25 Mar 2023 17:50:45 -0500 Subject: [PATCH 010/220] Test option to skip unrolling user-defined-types --- .../TEST_generated_code_not_unrolled.sol | 24 +++++++++++++++++++ tests/test_code_generation.py | 8 +++++++ 2 files changed, 32 insertions(+) create mode 100644 tests/code_generation/TEST_generated_code_not_unrolled.sol diff --git a/tests/code_generation/TEST_generated_code_not_unrolled.sol b/tests/code_generation/TEST_generated_code_not_unrolled.sol new file mode 100644 index 000000000..959525259 --- /dev/null +++ b/tests/code_generation/TEST_generated_code_not_unrolled.sol @@ -0,0 +1,24 @@ +interface ITestContract { + event NoParams(); + event Anonymous(); + event OneParam(address); + event OneParamIndexed(address); + error ErrorWithEnum(SomeEnum); + error ErrorSimple(); + error ErrorWithArgs(uint256, uint256); + error ErrorWithStruct(St); + enum SomeEnum { ONE, TWO, THREE } + struct St { + uint256 v; + } + function stateA() external returns (uint256); + function owner() external returns (address); + function structs(address,uint256) external returns (uint256); + function err0() external; + function err1() external; + function err2(uint256,uint256) external; + function newSt(uint256) external returns (St memory); + function getSt(uint256) external view returns (St memory); + function removeSt(St memory) external; +} + diff --git a/tests/test_code_generation.py b/tests/test_code_generation.py index 13d1c8fb0..d69a7836d 100644 --- a/tests/test_code_generation.py +++ b/tests/test_code_generation.py @@ -23,3 +23,11 @@ def test_interface_generation() -> None: expected = file.read() assert actual == expected + + actual = generate_interface(sl.get_contract_from_name("TestContract")[0], unroll_structs=False) + expected_path = os.path.join(CODE_TEST_ROOT, "TEST_generated_code_not_unrolled.sol") + + with open(expected_path, "r", encoding="utf-8") as file: + expected = file.read() + + assert actual == expected From c3f42c62e66fa6682c0b1985d6226e47e540eac8 Mon Sep 17 00:00:00 2001 From: webthethird Date: Sat, 25 Mar 2023 17:54:53 -0500 Subject: [PATCH 011/220] Black --- slither/utils/code_generation.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index ae03e2090..f0c433ac3 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -79,7 +79,8 @@ def generate_interface_function_signature( convert_type_for_solidity_signature_to_string(param.type).replace("(", "").replace(")", "") if unroll_structs else f"{str(param.type.type)} memory" - if isinstance(param.type, UserDefinedType) and isinstance(param.type.type, (Structure, Enum)) + if isinstance(param.type, UserDefinedType) + and isinstance(param.type.type, (Structure, Enum)) else str(param.type) for param in func.parameters ] @@ -112,11 +113,11 @@ def generate_struct_interface_str(struct: "Structure") -> str: return definition -def generate_custom_error_interface(error: "CustomErrorContract", unroll_structs: bool = True) -> str: +def generate_custom_error_interface( + error: "CustomErrorContract", unroll_structs: bool = True +) -> str: args = [ - convert_type_for_solidity_signature_to_string(arg.type) - .replace("(", "") - .replace(")", "") + convert_type_for_solidity_signature_to_string(arg.type).replace("(", "").replace(")", "") if unroll_structs else str(arg.type.type) if isinstance(arg.type, UserDefinedType) and isinstance(arg.type.type, (Structure, Enum)) From 36e1ac1e011aab8fa22b47e6de5ff4d728f647a6 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 27 Mar 2023 10:37:36 -0500 Subject: [PATCH 012/220] Better handling of state variable signatures especially contract-type variables and functions that return them --- slither/utils/code_generation.py | 51 ++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index f0c433ac3..fc7578040 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -1,19 +1,25 @@ # Functions for generating Solidity code from typing import TYPE_CHECKING, Optional -from slither.utils.type import convert_type_for_solidity_signature_to_string -from slither.core.solidity_types.user_defined_type import UserDefinedType -from slither.core.declarations import Structure, Enum +from slither.utils.type import ( + convert_type_for_solidity_signature_to_string, + export_nested_types_from_variable, + export_return_type_from_variable, +) +from slither.core.solidity_types import UserDefinedType, MappingType, ArrayType +from slither.core.declarations import Structure, Enum, Contract if TYPE_CHECKING: - from slither.core.declarations import FunctionContract, Contract, CustomErrorContract + from slither.core.declarations import FunctionContract, CustomErrorContract + from slither.core.variables import StateVariable def generate_interface(contract: "Contract", unroll_structs: bool = True) -> str: """ Generates code for a Solidity interface to the contract. Args: - contract: A Contract object + contract: A Contract object. + unroll_structs: Specifies whether to use structures' underlying types instead of the user-defined type. Returns: A string with the code for an interface, with function stubs for all public or external functions and @@ -30,7 +36,7 @@ def generate_interface(contract: "Contract", unroll_structs: bool = True) -> str for struct in contract.structures: interface += generate_struct_interface_str(struct) for var in contract.state_variables_entry_points: - interface += f" function {var.signature_str.replace('returns', 'external returns ')};\n" + interface += generate_interface_variable_signature(var, unroll_structs) for func in contract.functions_entry_points: if func.is_constructor or func.is_fallback or func.is_receive: continue @@ -41,6 +47,35 @@ def generate_interface(contract: "Contract", unroll_structs: bool = True) -> str return interface +def generate_interface_variable_signature( + var: "StateVariable", unroll_structs: bool = True +) -> Optional[str]: + if unroll_structs: + params = [ + convert_type_for_solidity_signature_to_string(x).replace("(", "").replace(")", "") + for x in export_nested_types_from_variable(var) + ] + returns = [ + convert_type_for_solidity_signature_to_string(x).replace("(", "").replace(")", "") + for x in export_return_type_from_variable(var) + ] + else: + _, params, _ = var.signature + returns = [] + _type = var.type + while isinstance(_type, MappingType): + _type = _type.type_to + while isinstance(_type, (ArrayType, UserDefinedType)): + _type = _type.type + ret = str(_type) + if isinstance(_type, Structure): + ret += " memory" + elif isinstance(_type, Contract): + ret = "address" + returns.append(ret) + return f" function {var.name}({','.join(params)}) external returns ({', '.join(returns)});\n" + + def generate_interface_function_signature( func: "FunctionContract", unroll_structs: bool = True ) -> Optional[str]: @@ -72,6 +107,8 @@ def generate_interface_function_signature( if unroll_structs else f"{str(ret.type.type)} memory" if isinstance(ret.type, UserDefinedType) and isinstance(ret.type.type, (Structure, Enum)) + else "address" + if isinstance(ret.type, UserDefinedType) and isinstance(ret.type.type, Contract) else str(ret.type) for ret in func.returns ] @@ -81,6 +118,8 @@ def generate_interface_function_signature( else f"{str(param.type.type)} memory" if isinstance(param.type, UserDefinedType) and isinstance(param.type.type, (Structure, Enum)) + else "address" + if isinstance(param.type, UserDefinedType) and isinstance(param.type.type, Contract) else str(param.type) for param in func.parameters ] From 380301b08da55fdd23efb7838be4f5e108acbcdc Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 27 Mar 2023 10:38:57 -0500 Subject: [PATCH 013/220] More robust testing including ArrayType vars and user-defined contract types --- tests/code_generation/CodeGeneration.sol | 13 +++++++++---- tests/code_generation/TEST_generated_code.sol | 5 ++++- .../TEST_generated_code_not_unrolled.sol | 5 ++++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/tests/code_generation/CodeGeneration.sol b/tests/code_generation/CodeGeneration.sol index c15017abd..749e23f32 100644 --- a/tests/code_generation/CodeGeneration.sol +++ b/tests/code_generation/CodeGeneration.sol @@ -8,7 +8,9 @@ contract TestContract is I { uint public stateA; uint private stateB; address public immutable owner = msg.sender; - mapping(address => mapping(uint => St)) public structs; + mapping(address => mapping(uint => St)) public structsMap; + St[] public structsArray; + I public otherI; event NoParams(); event Anonymous() anonymous; @@ -44,13 +46,16 @@ contract TestContract is I { function newSt(uint x) public returns (St memory) { St memory st; st.v = x; - structs[msg.sender][x] = st; + structsMap[msg.sender][x] = st; return st; } function getSt(uint x) public view returns (St memory) { - return structs[msg.sender][x]; + return structsMap[msg.sender][x]; } function removeSt(St memory st) public { - delete structs[msg.sender][st.v]; + delete structsMap[msg.sender][st.v]; + } + function setOtherI(I _i) public { + otherI = _i; } } \ No newline at end of file diff --git a/tests/code_generation/TEST_generated_code.sol b/tests/code_generation/TEST_generated_code.sol index 62e08bd74..cbddea2ef 100644 --- a/tests/code_generation/TEST_generated_code.sol +++ b/tests/code_generation/TEST_generated_code.sol @@ -13,12 +13,15 @@ interface ITestContract { } function stateA() external returns (uint256); function owner() external returns (address); - function structs(address,uint256) external returns (uint256); + function structsMap(address,uint256) external returns (uint256); + function structsArray(uint256) external returns (uint256); + function otherI() external returns (address); function err0() external; function err1() external; function err2(uint256,uint256) external; function newSt(uint256) external returns (uint256); function getSt(uint256) external view returns (uint256); function removeSt(uint256) external; + function setOtherI(address) external; } diff --git a/tests/code_generation/TEST_generated_code_not_unrolled.sol b/tests/code_generation/TEST_generated_code_not_unrolled.sol index 959525259..b8e8c5d04 100644 --- a/tests/code_generation/TEST_generated_code_not_unrolled.sol +++ b/tests/code_generation/TEST_generated_code_not_unrolled.sol @@ -13,12 +13,15 @@ interface ITestContract { } function stateA() external returns (uint256); function owner() external returns (address); - function structs(address,uint256) external returns (uint256); + function structsMap(address,uint256) external returns (St memory); + function structsArray(uint256) external returns (St memory); + function otherI() external returns (address); function err0() external; function err1() external; function err2(uint256,uint256) external; function newSt(uint256) external returns (St memory); function getSt(uint256) external view returns (St memory); function removeSt(St memory) external; + function setOtherI(address) external; } From 45aca8be103b1f57866692c9d3e04ac0a7a217cc Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 27 Mar 2023 11:19:34 -0500 Subject: [PATCH 014/220] Handle nested Structures --- slither/utils/code_generation.py | 8 +++++++- tests/code_generation/CodeGeneration.sol | 4 ++++ tests/code_generation/TEST_generated_code.sol | 3 +++ .../code_generation/TEST_generated_code_not_unrolled.sol | 3 +++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index fc7578040..11459d05d 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -147,7 +147,13 @@ def generate_struct_interface_str(struct: "Structure") -> str: """ definition = f" struct {struct.name} {{\n" for elem in struct.elems_ordered: - definition += f" {elem.type} {elem.name};\n" + if isinstance(elem.type, UserDefinedType): + if isinstance(elem.type.type, (Structure, Enum)): + definition += f" {elem.type.type} {elem.name};\n" + elif isinstance(elem.type.type, Contract): + definition += f" address {elem.name};\n" + else: + definition += f" {elem.type} {elem.name};\n" definition += " }\n" return definition diff --git a/tests/code_generation/CodeGeneration.sol b/tests/code_generation/CodeGeneration.sol index 749e23f32..6f1f63c72 100644 --- a/tests/code_generation/CodeGeneration.sol +++ b/tests/code_generation/CodeGeneration.sol @@ -25,6 +25,10 @@ contract TestContract is I { uint v; } + struct Nested{ + St st; + } + function err0() public { revert ErrorSimple(); } diff --git a/tests/code_generation/TEST_generated_code.sol b/tests/code_generation/TEST_generated_code.sol index cbddea2ef..373fba9ca 100644 --- a/tests/code_generation/TEST_generated_code.sol +++ b/tests/code_generation/TEST_generated_code.sol @@ -11,6 +11,9 @@ interface ITestContract { struct St { uint256 v; } + struct Nested { + St st; + } function stateA() external returns (uint256); function owner() external returns (address); function structsMap(address,uint256) external returns (uint256); diff --git a/tests/code_generation/TEST_generated_code_not_unrolled.sol b/tests/code_generation/TEST_generated_code_not_unrolled.sol index b8e8c5d04..0cc4dc040 100644 --- a/tests/code_generation/TEST_generated_code_not_unrolled.sol +++ b/tests/code_generation/TEST_generated_code_not_unrolled.sol @@ -11,6 +11,9 @@ interface ITestContract { struct St { uint256 v; } + struct Nested { + St st; + } function stateA() external returns (uint256); function owner() external returns (address); function structsMap(address,uint256) external returns (St memory); From 552a24d8579a0efe4ee0bf5e3f490875ac49db75 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 27 Mar 2023 11:25:18 -0500 Subject: [PATCH 015/220] Make events, errors, enums and structs optional but include all by default --- slither/utils/code_generation.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index 11459d05d..718410fb7 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -14,7 +14,14 @@ if TYPE_CHECKING: from slither.core.variables import StateVariable -def generate_interface(contract: "Contract", unroll_structs: bool = True) -> str: +def generate_interface( + contract: "Contract", + unroll_structs: bool = True, + skip_events: bool = False, + skip_errors: bool = False, + skip_enums: bool = False, + skip_structs: bool = False +) -> str: """ Generates code for a Solidity interface to the contract. Args: @@ -26,15 +33,19 @@ def generate_interface(contract: "Contract", unroll_structs: bool = True) -> str state variables, as well as any events, custom errors and/or structs declared in the contract. """ interface = f"interface I{contract.name} {{\n" - for event in contract.events: - name, args = event.signature - interface += f" event {name}({', '.join(args)});\n" - for error in contract.custom_errors: - interface += generate_custom_error_interface(error, unroll_structs) - for enum in contract.enums: - interface += f" enum {enum.name} {{ {', '.join(enum.values)} }}\n" - for struct in contract.structures: - interface += generate_struct_interface_str(struct) + if not skip_events: + for event in contract.events: + name, args = event.signature + interface += f" event {name}({', '.join(args)});\n" + if not skip_errors: + for error in contract.custom_errors: + interface += generate_custom_error_interface(error, unroll_structs) + if not skip_enums: + for enum in contract.enums: + interface += f" enum {enum.name} {{ {', '.join(enum.values)} }}\n" + if not skip_structs: + for struct in contract.structures: + interface += generate_struct_interface_str(struct) for var in contract.state_variables_entry_points: interface += generate_interface_variable_signature(var, unroll_structs) for func in contract.functions_entry_points: From f61c59ae6c1de66b91131fc035e57a32e5bbc069 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 27 Mar 2023 11:43:16 -0500 Subject: [PATCH 016/220] Handle arrays of user-defined types in params/returns --- slither/utils/code_generation.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index 718410fb7..e7647bfcc 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -15,12 +15,12 @@ if TYPE_CHECKING: def generate_interface( - contract: "Contract", - unroll_structs: bool = True, - skip_events: bool = False, - skip_errors: bool = False, - skip_enums: bool = False, - skip_structs: bool = False + contract: "Contract", + unroll_structs: bool = True, + skip_events: bool = False, + skip_errors: bool = False, + skip_enums: bool = False, + skip_structs: bool = False, ) -> str: """ Generates code for a Solidity interface to the contract. @@ -116,6 +116,7 @@ def generate_interface_function_signature( returns = [ convert_type_for_solidity_signature_to_string(ret.type).replace("(", "").replace(")", "") if unroll_structs + or (isinstance(ret.type, ArrayType) and isinstance(ret.type.type, UserDefinedType)) else f"{str(ret.type.type)} memory" if isinstance(ret.type, UserDefinedType) and isinstance(ret.type.type, (Structure, Enum)) else "address" @@ -126,6 +127,7 @@ def generate_interface_function_signature( parameters = [ convert_type_for_solidity_signature_to_string(param.type).replace("(", "").replace(")", "") if unroll_structs + or (isinstance(param.type, ArrayType) and isinstance(param.type.type, UserDefinedType)) else f"{str(param.type.type)} memory" if isinstance(param.type, UserDefinedType) and isinstance(param.type.type, (Structure, Enum)) From 0cac8ccb07b99ef897555a655babd5c9be695668 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 27 Mar 2023 12:20:32 -0500 Subject: [PATCH 017/220] Handle array's data location in params/returns --- slither/utils/code_generation.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index e7647bfcc..f1099a66a 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -6,7 +6,7 @@ from slither.utils.type import ( export_nested_types_from_variable, export_return_type_from_variable, ) -from slither.core.solidity_types import UserDefinedType, MappingType, ArrayType +from slither.core.solidity_types import UserDefinedType, MappingType, ArrayType, ElementaryType from slither.core.declarations import Structure, Enum, Contract if TYPE_CHECKING: @@ -14,6 +14,7 @@ if TYPE_CHECKING: from slither.core.variables import StateVariable +# pylint: disable=too-many-arguments def generate_interface( contract: "Contract", unroll_structs: bool = True, @@ -116,7 +117,12 @@ def generate_interface_function_signature( returns = [ convert_type_for_solidity_signature_to_string(ret.type).replace("(", "").replace(")", "") if unroll_structs - or (isinstance(ret.type, ArrayType) and isinstance(ret.type.type, UserDefinedType)) + else convert_type_for_solidity_signature_to_string(ret.type) + .replace("(", "") + .replace(")", "") + + f" {ret.location}" + if isinstance(ret.type, ArrayType) + and isinstance(ret.type.type, (UserDefinedType, ElementaryType)) else f"{str(ret.type.type)} memory" if isinstance(ret.type, UserDefinedType) and isinstance(ret.type.type, (Structure, Enum)) else "address" @@ -127,7 +133,12 @@ def generate_interface_function_signature( parameters = [ convert_type_for_solidity_signature_to_string(param.type).replace("(", "").replace(")", "") if unroll_structs - or (isinstance(param.type, ArrayType) and isinstance(param.type.type, UserDefinedType)) + else convert_type_for_solidity_signature_to_string(param.type) + .replace("(", "") + .replace(")", "") + + f" {param.location}" + if isinstance(param.type, ArrayType) + and isinstance(param.type.type, (UserDefinedType, ElementaryType)) else f"{str(param.type.type)} memory" if isinstance(param.type, UserDefinedType) and isinstance(param.type.type, (Structure, Enum)) From 216ccdc9594d85114e592868d4b004b13bc2fa21 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 27 Mar 2023 13:31:06 -0500 Subject: [PATCH 018/220] Refactor to avoid assumptions re: indentation, semicolon and new line --- slither/utils/code_generation.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index f1099a66a..34c489b74 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -40,15 +40,15 @@ def generate_interface( interface += f" event {name}({', '.join(args)});\n" if not skip_errors: for error in contract.custom_errors: - interface += generate_custom_error_interface(error, unroll_structs) + interface += f" error {generate_custom_error_interface(error, unroll_structs)};\n" if not skip_enums: for enum in contract.enums: interface += f" enum {enum.name} {{ {', '.join(enum.values)} }}\n" if not skip_structs: for struct in contract.structures: - interface += generate_struct_interface_str(struct) + interface += generate_struct_interface_str(struct, indent=4) for var in contract.state_variables_entry_points: - interface += generate_interface_variable_signature(var, unroll_structs) + interface += f" function {generate_interface_variable_signature(var, unroll_structs)};\n" for func in contract.functions_entry_points: if func.is_constructor or func.is_fallback or func.is_receive: continue @@ -85,7 +85,7 @@ def generate_interface_variable_signature( elif isinstance(_type, Contract): ret = "address" returns.append(ret) - return f" function {var.name}({','.join(params)}) external returns ({', '.join(returns)});\n" + return f"{var.name}({','.join(params)}) external returns ({', '.join(returns)})" def generate_interface_function_signature( @@ -155,7 +155,7 @@ def generate_interface_function_signature( return _interface_signature_str -def generate_struct_interface_str(struct: "Structure") -> str: +def generate_struct_interface_str(struct: "Structure", indent: int = 0) -> str: """ Generates code for a structure declaration in an interface of the form: struct struct_name { @@ -164,21 +164,25 @@ def generate_struct_interface_str(struct: "Structure") -> str: ... ... } Args: - struct: A Structure object + struct: A Structure object. + indent: Number of spaces to indent the code block with. Returns: The structure declaration code as a string. """ - definition = f" struct {struct.name} {{\n" + spaces = "" + for _ in range(0, indent): + spaces += " " + definition = f"{spaces}struct {struct.name} {{\n" for elem in struct.elems_ordered: if isinstance(elem.type, UserDefinedType): if isinstance(elem.type.type, (Structure, Enum)): - definition += f" {elem.type.type} {elem.name};\n" + definition += f"{spaces} {elem.type.type} {elem.name};\n" elif isinstance(elem.type.type, Contract): - definition += f" address {elem.name};\n" + definition += f"{spaces} address {elem.name};\n" else: - definition += f" {elem.type} {elem.name};\n" - definition += " }\n" + definition += f"{spaces} {elem.type} {elem.name};\n" + definition += f"{spaces}\n" return definition @@ -193,4 +197,4 @@ def generate_custom_error_interface( else str(arg.type) for arg in error.parameters ] - return f" error {error.name}({', '.join(args)});\n" + return f"{error.name}({', '.join(args)})" From 0d3115fda08baf9bb559ef7f317e6efa92d21bb2 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 28 Mar 2023 11:54:16 -0500 Subject: [PATCH 019/220] run tests in parallel locally with makefile --- .github/workflows/test.yml | 2 - Makefile | 87 + setup.py | 2 + tests/conftest.py | 27 + tests/e2e/compilation/test_resolution.py | 12 +- tests/tools/read-storage/test_read_storage.py | 6 +- tests/unit/core/test_arithmetic.py | 6 +- tests/unit/core/test_code_comments.py | 18 +- tests/unit/core/test_constant_folding.py | 15 +- tests/unit/core/test_contract_declaration.py | 17 +- tests/unit/core/test_function_declaration.py | 24 +- tests/unit/core/test_source_mapping.py | 29 +- tests/unit/core/test_storage_layout.py | 10 +- tests/unit/core/test_using_for.py | 36 +- tests/unit/slithir/test_operation_reads.py | 6 +- tests/unit/slithir/test_ssa_generation.py | 2161 ++++++++--------- .../unit/slithir/test_ternary_expressions.py | 6 +- tests/unit/utils/test_code_generation.py | 6 +- tests/unit/utils/test_functions_ids.py | 6 +- tests/unit/utils/test_type_helpers.py | 6 +- 20 files changed, 1287 insertions(+), 1195 deletions(-) create mode 100644 Makefile create mode 100644 tests/conftest.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 44bba5878..a003eb168 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,8 +37,6 @@ jobs: - name: Install dependencies run: | pip install ".[test]" - solc-select install 0.8.0 - solc-select use 0.8.0 - name: Setup node uses: actions/setup-node@v3 diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..cc102c958 --- /dev/null +++ b/Makefile @@ -0,0 +1,87 @@ +SHELL := /bin/bash + +PY_MODULE := slither + +ALL_PY_SRCS := $(shell find $(PY_MODULE) -name '*.py') \ + $(shell find test -name '*.py') + +# Optionally overriden by the user, if they're using a virtual environment manager. +VENV ?= env + +# On Windows, venv scripts/shims are under `Scripts` instead of `bin`. +VENV_BIN := $(VENV)/bin +ifeq ($(OS),Windows_NT) + VENV_BIN := $(VENV)/Scripts +endif + +# Optionally overridden by the user in the `release` target. +BUMP_ARGS := + +# Optionally overridden by the user in the `test` target. +TESTS := + +# Optionally overridden by the user/CI, to limit the installation to a specific +# subset of development dependencies. +SLITHER_EXTRA := dev + +# If the user selects a specific test pattern to run, set `pytest` to fail fast +# and only run tests that match the pattern. +# Otherwise, run all tests and enable coverage assertions, since we expect +# complete test coverage. +ifneq ($(TESTS),) + TEST_ARGS := -x -k $(TESTS) + COV_ARGS := +else + TEST_ARGS := -n auto + COV_ARGS := --cov-append # --fail-under 100 +endif + +.PHONY: all +all: + @echo "Run my targets individually!" + +.PHONY: dev +dev: $(VENV)/pyvenv.cfg + +.PHONY: run +run: $(VENV)/pyvenv.cfg + @. $(VENV_BIN)/activate && slither $(ARGS) + +$(VENV)/pyvenv.cfg: pyproject.toml + # Create our Python 3 virtual environment + python3 -m venv env + $(VENV_BIN)/python -m pip install --upgrade pip + $(VENV_BIN)/python -m pip install -e .[$(SLITHER_EXTRA)] + +.PHONY: lint +lint: $(VENV)/pyvenv.cfg + . $(VENV_BIN)/activate && \ + black --check $(ALL_PY_SRCS) && \ + pylint $(ALL_PY_SRCS) + # ruff $(ALL_PY_SRCS) && \ + # mypy $(PY_MODULE) && + +.PHONY: reformat +reformat: + . $(VENV_BIN)/activate && \ + black $(PY_MODULE) + +.PHONY: test tests +test tests: $(VENV)/pyvenv.cfg + . $(VENV_BIN)/activate && \ + pytest --cov=$(PY_MODULE) $(T) $(TEST_ARGS) && \ + python -m coverage report -m $(COV_ARGS) + +.PHONY: doc +doc: $(VENV)/pyvenv.cfg + . $(VENV_BIN)/activate && \ + PDOC_ALLOW_EXEC=1 pdoc -o html slither '!slither.tools' + +.PHONY: package +package: $(VENV)/pyvenv.cfg + . $(VENV_BIN)/activate && \ + python3 -m build + +.PHONY: edit +edit: + $(EDITOR) $(ALL_PY_SRCS) \ No newline at end of file diff --git a/setup.py b/setup.py index 105209851..4ec357ac0 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,7 @@ setup( # "crytic-compile>=0.3.0", "crytic-compile@git+https://github.com/crytic/crytic-compile.git@master#egg=crytic-compile", "web3>=6.0.0", + "solc-select@git+https://github.com/crytic/solc-select.git@query-artifact-path#egg=solc-select", ], extras_require={ "lint": [ @@ -31,6 +32,7 @@ setup( "deepdiff", "numpy", "coverage[toml]", + "filelock", ], "doc": [ "pdoc", diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 000000000..bf15b27d1 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,27 @@ +import pytest +from filelock import FileLock +from solc_select import solc_select + +@pytest.fixture(scope="session") +def solc_versions_installed(): + """List of solc versions available in the test environment.""" + return [] + +@pytest.fixture(scope="session", autouse=True) +def register_solc_versions_installed(solc_versions_installed): + solc_versions_installed.extend(solc_select.installed_versions()) + +@pytest.fixture(scope="session") +def use_solc_version(request, solc_versions_installed): + def _use_solc_version(version): + print(version) + if version not in solc_versions_installed: + print("Installing solc version", version) + solc_select.install_artifacts([version]) + artifact_path = solc_select.artifact_path(version) + lock = FileLock(artifact_path) + try: + yield artifact_path + finally: + lock.release() + return _use_solc_version diff --git a/tests/e2e/compilation/test_resolution.py b/tests/e2e/compilation/test_resolution.py index 4b50b0737..3444af2e9 100644 --- a/tests/e2e/compilation/test_resolution.py +++ b/tests/e2e/compilation/test_resolution.py @@ -24,8 +24,8 @@ def test_node_modules() -> None: _run_all_detectors(slither) -def test_contract_name_collisions() -> None: - solc_select.switch_global_version("0.8.0", always_install=True) +def test_contract_name_collision(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.0")) standard_json = SolcStandardJson() standard_json.add_source_file( Path(TEST_DATA_DIR, "test_contract_name_collisions", "a.sol").as_posix() @@ -34,13 +34,13 @@ def test_contract_name_collisions() -> None: Path(TEST_DATA_DIR, "test_contract_name_collisions", "b.sol").as_posix() ) - compilation = CryticCompile(standard_json) + compilation = CryticCompile(standard_json, solc=solc_path) slither = Slither(compilation) _run_all_detectors(slither) -def test_cycle() -> None: - solc_select.switch_global_version("0.8.0", always_install=True) - slither = Slither(Path(TEST_DATA_DIR, "test_cyclic_import", "a.sol").as_posix()) +def test_cycle(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.0")) + slither = Slither(Path(TEST_DATA_DIR, "test_cyclic_import", "a.sol").as_posix(), solc=solc_path) _run_all_detectors(slither) diff --git a/tests/tools/read-storage/test_read_storage.py b/tests/tools/read-storage/test_read_storage.py index 38d909bf8..3b83df855 100644 --- a/tests/tools/read-storage/test_read_storage.py +++ b/tests/tools/read-storage/test_read_storage.py @@ -90,7 +90,9 @@ def deploy_contract(w3, ganache, contract_bin, contract_abi) -> Contract: # pylint: disable=too-many-locals @pytest.mark.usefixtures("web3", "ganache") -def test_read_storage(web3, ganache) -> None: +def test_read_storage(web3, ganache, use_solc_version) -> None: + solc_path = next(use_solc_version(version="0.8.10")) + assert web3.is_connected() bin_path = Path(TEST_DATA_DIR, "StorageLayout.bin").as_posix() abi_path = Path(TEST_DATA_DIR, "StorageLayout.abi").as_posix() @@ -100,7 +102,7 @@ def test_read_storage(web3, ganache) -> None: contract.functions.store().transact({"from": ganache.eth_address}) address = contract.address - sl = Slither(Path(TEST_DATA_DIR, "storage_layout-0.8.10.sol").as_posix()) + sl = Slither(Path(TEST_DATA_DIR, "storage_layout-0.8.10.sol").as_posix(), solc=solc_path) contracts = sl.contracts srs = SlitherReadStorage(contracts, 100) diff --git a/tests/unit/core/test_arithmetic.py b/tests/unit/core/test_arithmetic.py index 621ff0f94..6e7843ea0 100644 --- a/tests/unit/core/test_arithmetic.py +++ b/tests/unit/core/test_arithmetic.py @@ -8,9 +8,9 @@ from slither.utils.arithmetic import unchecked_arithemtic_usage TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" / "arithmetic_usage" -def test_arithmetic_usage() -> None: - solc_select.switch_global_version("0.8.15", always_install=True) - slither = Slither(Path(TEST_DATA_DIR, "test.sol").as_posix()) +def test_arithmetic_usage(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.15")) + slither = Slither(Path(TEST_DATA_DIR, "test.sol").as_posix(), solc=solc_path) assert { f.source_mapping.content_hash for f in unchecked_arithemtic_usage(slither.contracts[0]) diff --git a/tests/unit/core/test_code_comments.py b/tests/unit/core/test_code_comments.py index 01b9ff336..4fbbae658 100644 --- a/tests/unit/core/test_code_comments.py +++ b/tests/unit/core/test_code_comments.py @@ -8,9 +8,9 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" CUSTOM_COMMENTS_TEST_DATA_DIR = Path(TEST_DATA_DIR, "custom_comments") -def test_upgradeable_comments() -> None: - solc_select.switch_global_version("0.8.10", always_install=True) - slither = Slither(Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "upgrade.sol").as_posix()) +def test_upgradeable_comments(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.10")) + slither = Slither(Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "upgrade.sol").as_posix(), solc=solc_path) compilation_unit = slither.compilation_units[0] proxy = compilation_unit.get_contract_from_name("Proxy")[0] @@ -27,11 +27,11 @@ def test_upgradeable_comments() -> None: assert v1.upgradeable_version == "version_1" -def test_contract_comments() -> None: +def test_contract_comments(use_solc_version) -> None: comments = " @title Test Contract\n @dev Test comment" - solc_select.switch_global_version("0.8.10", always_install=True) - slither = Slither(Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "contract_comment.sol").as_posix()) + solc_path = next(use_solc_version("0.8.10")) + slither = Slither(Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "contract_comment.sol").as_posix(), solc=solc_path) compilation_unit = slither.compilation_units[0] contract = compilation_unit.get_contract_from_name("A")[0] @@ -40,8 +40,8 @@ def test_contract_comments() -> None: # Old solc versions have a different parsing of comments # the initial space (after *) is also not kept on every line comments = "@title Test Contract\n@dev Test comment" - solc_select.switch_global_version("0.5.16", always_install=True) - slither = Slither(Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "contract_comment.sol").as_posix()) + solc_path = next(use_solc_version("0.5.16")) + slither = Slither(Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "contract_comment.sol").as_posix(), solc=solc_path) compilation_unit = slither.compilation_units[0] contract = compilation_unit.get_contract_from_name("A")[0] @@ -49,10 +49,10 @@ def test_contract_comments() -> None: # Test with legacy AST comments = "@title Test Contract\n@dev Test comment" - solc_select.switch_global_version("0.5.16", always_install=True) slither = Slither( Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "contract_comment.sol").as_posix(), solc_force_legacy_json=True, + solc=solc_path, ) compilation_unit = slither.compilation_units[0] contract = compilation_unit.get_contract_from_name("A")[0] diff --git a/tests/unit/core/test_constant_folding.py b/tests/unit/core/test_constant_folding.py index eb40a43c0..d01b35dc0 100644 --- a/tests/unit/core/test_constant_folding.py +++ b/tests/unit/core/test_constant_folding.py @@ -6,13 +6,15 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" CONSTANT_FOLDING_TEST_ROOT = Path(TEST_DATA_DIR, "constant_folding") -def test_constant_folding_unary(): +def test_constant_folding_unary(use_solc_version): + solc_path = next(use_solc_version("0.8.0")) file = Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_unary.sol").as_posix() - Slither(file) + Slither(file, solc=solc_path) -def test_constant_folding_rational(): - s = Slither(Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_rational.sol").as_posix()) +def test_constant_folding_rational(use_solc_version): + solc_path = next(use_solc_version("0.8.0")) + s = Slither(Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_rational.sol").as_posix(), solc=solc_path) contract = s.get_contract_from_name("C")[0] variable_a = contract.get_state_variable_from_name("a") @@ -50,8 +52,9 @@ def test_constant_folding_rational(): assert str(ConstantFolding(variable_g.expression, "int64").result()) == "-7" -def test_constant_folding_binary_expressions(): - sl = Slither(Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_binop.sol").as_posix()) +def test_constant_folding_binary_expressions(use_solc_version): + solc_path = next(use_solc_version("0.8.0")) + sl = Slither(Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_binop.sol").as_posix(), solc=solc_path) contract = sl.get_contract_from_name("BinOp")[0] variable_a = contract.get_state_variable_from_name("a") diff --git a/tests/unit/core/test_contract_declaration.py b/tests/unit/core/test_contract_declaration.py index db9a141f5..3c1e7175e 100644 --- a/tests/unit/core/test_contract_declaration.py +++ b/tests/unit/core/test_contract_declaration.py @@ -9,25 +9,26 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" CONTRACT_DECL_TEST_ROOT = Path(TEST_DATA_DIR, "contract_declaration") -def test_abstract_contract() -> None: - solc_select.switch_global_version("0.8.0", always_install=True) - slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "abstract.sol").as_posix()) +def test_abstract_contract(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.0")) + slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "abstract.sol").as_posix(), solc=solc_path) assert not slither.contracts[0].is_fully_implemented - solc_select.switch_global_version("0.5.0", always_install=True) - slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "implicit_abstract.sol").as_posix()) + solc_path = next(use_solc_version("0.5.0")) + slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "implicit_abstract.sol").as_posix(), solc=solc_path) assert not slither.contracts[0].is_fully_implemented slither = Slither( Path(CONTRACT_DECL_TEST_ROOT, "implicit_abstract.sol").as_posix(), solc_force_legacy_json=True, + solc=solc_path ) assert not slither.contracts[0].is_fully_implemented -def test_private_variable() -> None: - solc_select.switch_global_version("0.8.15", always_install=True) - slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "private_variable.sol").as_posix()) +def test_private_variable(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.15")) + slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "private_variable.sol").as_posix(), solc=solc_path) contract_c = slither.get_contract_from_name("C")[0] f = contract_c.functions[0] var_read = f.variables_read[0] diff --git a/tests/unit/core/test_function_declaration.py b/tests/unit/core/test_function_declaration.py index 6f7aa23e7..4faa9d919 100644 --- a/tests/unit/core/test_function_declaration.py +++ b/tests/unit/core/test_function_declaration.py @@ -15,11 +15,11 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" FUNC_DELC_TEST_ROOT = Path(TEST_DATA_DIR, "function_declaration") -def test_functions(): +def test_functions(use_solc_version): # pylint: disable=too-many-statements - solc_select.switch_global_version("0.6.12", always_install=True) + solc_path = next(use_solc_version("0.6.12")) file = Path(FUNC_DELC_TEST_ROOT, "test_function.sol").as_posix() - slither = Slither(file) + slither = Slither(file, solc=solc_path) functions = slither.get_contract_from_name("TestFunction")[0].available_functions_as_dict() f = functions["external_payable(uint256)"] @@ -248,10 +248,10 @@ def test_functions(): assert f.return_type[0] == ElementaryType("bool") -def test_function_can_send_eth(): - solc_select.switch_global_version("0.6.12", always_install=True) +def test_function_can_send_eth(use_solc_version): + solc_path = next(use_solc_version("0.6.12")) file = Path(FUNC_DELC_TEST_ROOT, "test_function.sol").as_posix() - slither = Slither(file) + slither = Slither(file, solc=solc_path) compilation_unit = slither.compilation_units[0] functions = compilation_unit.get_contract_from_name("TestFunctionCanSendEth")[ 0 @@ -273,10 +273,10 @@ def test_function_can_send_eth(): assert functions["highlevel_call_via_external()"].can_send_eth() is False -def test_reentrant(): - solc_select.switch_global_version("0.8.10", always_install=True) +def test_reentrant(use_solc_version): + solc_path = next(use_solc_version("0.8.10")) file = Path(FUNC_DELC_TEST_ROOT, "test_function_reentrant.sol").as_posix() - slither = Slither(file) + slither = Slither(file, solc=solc_path) compilation_unit = slither.compilation_units[0] functions = compilation_unit.get_contract_from_name("TestReentrant")[ 0 @@ -290,10 +290,10 @@ def test_reentrant(): assert functions["internal_and_reentrant()"].is_reentrant -def test_public_variable() -> None: - solc_select.switch_global_version("0.6.12", always_install=True) +def test_public_variable(use_solc_version) -> None: + solc_path = next(use_solc_version("0.6.12")) file = Path(FUNC_DELC_TEST_ROOT, "test_function.sol").as_posix() - slither = Slither(file) + slither = Slither(file, solc=solc_path) contracts = slither.get_contract_from_name("TestFunction") assert len(contracts) == 1 contract = contracts[0] diff --git a/tests/unit/core/test_source_mapping.py b/tests/unit/core/test_source_mapping.py index 745d391d9..2dd8c2435 100644 --- a/tests/unit/core/test_source_mapping.py +++ b/tests/unit/core/test_source_mapping.py @@ -8,14 +8,13 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" SRC_MAPPING_TEST_ROOT = Path(TEST_DATA_DIR, "src_mapping") -def test_source_mapping(): - solc_select.switch_global_version("0.6.12", always_install=True) +def test_source_mapping(use_solc_version): + solc_path = next(use_solc_version("0.6.12")) file = Path(SRC_MAPPING_TEST_ROOT, "inheritance.sol").as_posix() - slither = Slither(file) + slither = Slither(file, solc=solc_path) # Check if A.f() is at the offset 27 functions = slither.offset_to_objects(file, 27) - print(functions) assert len(functions) == 1 function = functions.pop() assert isinstance(function, Function) @@ -79,13 +78,13 @@ def _sort_references_lines(refs: list) -> list: return sorted([ref.lines[0] for ref in refs]) -def _test_references_user_defined_aliases(): +def test_references_user_defined_aliases(use_solc_version): """ Tests if references are filled correctly for user defined aliases (declared using "type [...] is [...]" statement). """ - solc_select.switch_global_version("0.8.16", always_install=True) + solc_path = next(use_solc_version("0.8.16")) file = Path(SRC_MAPPING_TEST_ROOT, "ReferencesUserDefinedAliases.sol").as_posix() - slither = Slither(file) + slither = Slither(file, solc=solc_path) alias_top_level = slither.compilation_units[0].user_defined_value_types["aliasTopLevel"] assert len(alias_top_level.references) == 2 @@ -102,26 +101,16 @@ def _test_references_user_defined_aliases(): assert lines == [13, 16] -def _test_references_user_defined_types_when_casting(): +def test_references_user_defined_types_when_casting(use_solc_version): """ Tests if references are filled correctly for user defined types in case of casting. """ - solc_select.switch_global_version("0.8.16", always_install=True) + solc_path = next(use_solc_version("0.8.16")) file = Path(SRC_MAPPING_TEST_ROOT, "ReferencesUserDefinedTypesCasting.sol").as_posix() - slither = Slither(file) + slither = Slither(file, solc=solc_path) contracts = slither.compilation_units[0].contracts a = contracts[0] if contracts[0].is_interface else contracts[1] assert len(a.references) == 2 lines = _sort_references_lines(a.references) assert lines == [12, 18] - - -def test_references(): - """ - Tests if references list is filled correctly in the following cases: - - user defined aliases (declared using "type [...] is [...]" statement) - - user defined types in case of casting (TypeConversion expressions) - """ - _test_references_user_defined_aliases() - _test_references_user_defined_types_when_casting() diff --git a/tests/unit/core/test_storage_layout.py b/tests/unit/core/test_storage_layout.py index 4cb439d77..fd21ce009 100644 --- a/tests/unit/core/test_storage_layout.py +++ b/tests/unit/core/test_storage_layout.py @@ -8,14 +8,14 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" STORAGE_TEST_ROOT = Path(TEST_DATA_DIR, "storage_layout") -def test_storage_layout(): +def test_storage_layout(use_solc_version): # the storage layout has not yet changed between solidity versions so we will test with one version of the compiler - solc_select.switch_global_version("0.8.10", always_install=True) + solc_path = next(use_solc_version("0.8.10")) test_item = Path(STORAGE_TEST_ROOT, "storage_layout-0.8.10.sol").as_posix() - sl = Slither(test_item, solc_force_legacy_json=False, disallow_partial=True) + sl = Slither(test_item, disallow_partial=True, solc=solc_path) - with Popen(["solc", test_item, "--storage-layout"], stdout=PIPE) as process: + with Popen([solc_path, test_item, "--storage-layout"], stdout=PIPE) as process: for line in process.stdout: # parse solc output if '{"storage":[{' in line.decode("utf-8"): # find the storage layout layout = iter(json.loads(line)["storage"]) @@ -34,3 +34,5 @@ def test_storage_layout(): break except KeyError as e: print(f"not found {e} ") + process.communicate() + assert process.returncode == 0 \ No newline at end of file diff --git a/tests/unit/core/test_using_for.py b/tests/unit/core/test_using_for.py index 88a7ea043..7b0e2d1d6 100644 --- a/tests/unit/core/test_using_for.py +++ b/tests/unit/core/test_using_for.py @@ -12,19 +12,19 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" USING_FOR_TEST_DATA_DIR = Path(TEST_DATA_DIR, "using_for") -def test_using_for_global_collision() -> None: - solc_select.switch_global_version("0.8.18", always_install=True) +def test_using_for_global_collision(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.15")) standard_json = SolcStandardJson() for source_file in Path(USING_FOR_TEST_DATA_DIR, "using_for_global_collision").rglob("*.sol"): standard_json.add_source_file(Path(source_file).as_posix()) - compilation = CryticCompile(standard_json) + compilation = CryticCompile(standard_json, solc=solc_path) sl = Slither(compilation) _run_all_detectors(sl) -def test_using_for_top_level_same_name() -> None: - solc_select.switch_global_version("0.8.15", always_install=True) - slither = Slither(Path(USING_FOR_TEST_DATA_DIR, "using-for-3-0.8.0.sol").as_posix()) +def test_using_for_top_level_same_name(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.15")) + slither = Slither(Path(USING_FOR_TEST_DATA_DIR, "using-for-3-0.8.0.sol").as_posix(), solc=solc_path) contract_c = slither.get_contract_from_name("C")[0] libCall = contract_c.get_function_from_full_name("libCall(uint256)") for ir in libCall.all_slithir_operations(): @@ -33,9 +33,9 @@ def test_using_for_top_level_same_name() -> None: assert False -def test_using_for_top_level_implicit_conversion() -> None: - solc_select.switch_global_version("0.8.15", always_install=True) - slither = Slither(Path(USING_FOR_TEST_DATA_DIR, "using-for-4-0.8.0.sol").as_posix()) +def test_using_for_top_level_implicit_conversion(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.15")) + slither = Slither(Path(USING_FOR_TEST_DATA_DIR, "using-for-4-0.8.0.sol").as_posix(), solc=solc_path) contract_c = slither.get_contract_from_name("C")[0] libCall = contract_c.get_function_from_full_name("libCall(uint16)") for ir in libCall.all_slithir_operations(): @@ -44,10 +44,10 @@ def test_using_for_top_level_implicit_conversion() -> None: assert False -def test_using_for_alias_top_level() -> None: - solc_select.switch_global_version("0.8.15", always_install=True) +def test_using_for_alias_top_level(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.15")) slither = Slither( - Path(USING_FOR_TEST_DATA_DIR, "using-for-alias-top-level-0.8.0.sol").as_posix() + Path(USING_FOR_TEST_DATA_DIR, "using-for-alias-top-level-0.8.0.sol").as_posix(), solc=solc_path ) contract_c = slither.get_contract_from_name("C")[0] libCall = contract_c.get_function_from_full_name("libCall(uint256)") @@ -64,10 +64,10 @@ def test_using_for_alias_top_level() -> None: assert False -def test_using_for_alias_contract() -> None: - solc_select.switch_global_version("0.8.15", always_install=True) +def test_using_for_alias_contract(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.15")) slither = Slither( - Path(USING_FOR_TEST_DATA_DIR, "using-for-alias-contract-0.8.0.sol").as_posix() + Path(USING_FOR_TEST_DATA_DIR, "using-for-alias-contract-0.8.0.sol").as_posix(), solc=solc_path ) contract_c = slither.get_contract_from_name("C")[0] libCall = contract_c.get_function_from_full_name("libCall(uint256)") @@ -84,9 +84,9 @@ def test_using_for_alias_contract() -> None: assert False -def test_using_for_in_library() -> None: - solc_select.switch_global_version("0.8.15", always_install=True) - slither = Slither(Path(USING_FOR_TEST_DATA_DIR, "using-for-in-library-0.8.0.sol").as_posix()) +def test_using_for_in_library(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.15")) + slither = Slither(Path(USING_FOR_TEST_DATA_DIR, "using-for-in-library-0.8.0.sol").as_posix(), solc=solc_path) contract_c = slither.get_contract_from_name("A")[0] libCall = contract_c.get_function_from_full_name("a(uint256)") for ir in libCall.all_slithir_operations(): diff --git a/tests/unit/slithir/test_operation_reads.py b/tests/unit/slithir/test_operation_reads.py index 3b5565c9f..10ae47404 100644 --- a/tests/unit/slithir/test_operation_reads.py +++ b/tests/unit/slithir/test_operation_reads.py @@ -28,12 +28,12 @@ OperationTest = namedtuple("OperationTest", "contract_name slithir_op") OPERATION_TEST = [OperationTest("NewContract", NewContract)] -def test_operation_reads() -> None: +def test_operation_reads(use_solc_version) -> None: """ Every slithir operation has its own contract and reads all local and state variables in readAllLocalVariables and readAllStateVariables, respectively. """ - solc_select.switch_global_version("0.8.15", always_install=True) - slither = Slither(Path(TEST_DATA_DIR, "operation_reads.sol").as_posix()) + solc_path = next(use_solc_version("0.8.15")) + slither = Slither(Path(TEST_DATA_DIR, "operation_reads.sol").as_posix(), solc=solc_path) for op_test in OPERATION_TEST: print(op_test) diff --git a/tests/unit/slithir/test_ssa_generation.py b/tests/unit/slithir/test_ssa_generation.py index 2146a3126..34ad5e4fe 100644 --- a/tests/unit/slithir/test_ssa_generation.py +++ b/tests/unit/slithir/test_ssa_generation.py @@ -1,1090 +1,1071 @@ -# pylint: disable=too-many-lines -import pathlib -from argparse import ArgumentTypeError -from collections import defaultdict -from contextlib import contextmanager -from inspect import getsourcefile -from tempfile import NamedTemporaryFile -from typing import Union, List, Optional, Dict, Callable - -import pytest -from solc_select import solc_select -from solc_select.solc_select import valid_version as solc_valid_version - -from slither import Slither -from slither.core.cfg.node import Node, NodeType -from slither.core.declarations import Function, Contract -from slither.core.variables.local_variable import LocalVariable -from slither.core.variables.state_variable import StateVariable -from slither.slithir.operations import ( - OperationWithLValue, - Phi, - Assignment, - HighLevelCall, - Return, - Operation, - Binary, - BinaryType, - InternalCall, - Index, - InitArray, -) -from slither.slithir.utils.ssa import is_used_later -from slither.slithir.variables import ( - Constant, - ReferenceVariable, - LocalIRVariable, - StateIRVariable, - TemporaryVariableSSA, -) - -# Directory of currently executing script. Will be used as basis for temporary file names. -SCRIPT_DIR = pathlib.Path(getsourcefile(lambda: 0)).parent # type:ignore - - -def valid_version(ver: str) -> bool: - """Wrapper function to check if the solc-version is valid - - The solc_select function raises and exception but for checks below, - only a bool is needed. - """ - try: - solc_valid_version(ver) - return True - except ArgumentTypeError: - return False - - -def have_ssa_if_ir(function: Function) -> None: - """Verifies that all nodes in a function that have IR also have SSA IR""" - for n in function.nodes: - if n.irs: - assert n.irs_ssa - - -# pylint: disable=too-many-branches, too-many-locals -def ssa_basic_properties(function: Function) -> None: - """Verifies that basic properties of ssa holds - - 1. Every name is defined only once - 2. A l-value is never index zero - there is always a zero-value available for each var - 3. Every r-value is at least defined at some point - 4. The number of ssa defs is >= the number of assignments to var - 5. Function parameters SSA are stored in function.parameters_ssa - - if function parameter is_storage it refers to a fake variable - 6. Function returns SSA are stored in function.returns_ssa - - if function return is_storage it refers to a fake variable - """ - ssa_lvalues = set() - ssa_rvalues = set() - lvalue_assignments: Dict[str, int] = {} - - for n in function.nodes: - for ir in n.irs: - if isinstance(ir, OperationWithLValue) and ir.lvalue: - name = ir.lvalue.name - if name is None: - continue - if name in lvalue_assignments: - lvalue_assignments[name] += 1 - else: - lvalue_assignments[name] = 1 - - for ssa in n.irs_ssa: - if isinstance(ssa, OperationWithLValue): - # 1 - assert ssa.lvalue not in ssa_lvalues - ssa_lvalues.add(ssa.lvalue) - - # 2 (if Local/State Var) - ssa_lvalue = ssa.lvalue - if isinstance(ssa_lvalue, (StateIRVariable, LocalIRVariable)): - assert ssa_lvalue.index > 0 - - for rvalue in filter( - lambda x: not isinstance(x, (StateIRVariable, Constant)), ssa.read - ): - ssa_rvalues.add(rvalue) - - # 3 - # Each var can have one non-defined value, the value initially held. Typically, - # var_0, i_0, state_0 or similar. - undef_vars = set() - for rvalue in ssa_rvalues: - if rvalue not in ssa_lvalues: - assert rvalue.non_ssa_version not in undef_vars - undef_vars.add(rvalue.non_ssa_version) - - # 4 - ssa_defs: Dict[str, int] = defaultdict(int) - for v in ssa_lvalues: - if v and v.name: - ssa_defs[v.name] += 1 - - for (k, count) in lvalue_assignments.items(): - assert ssa_defs[k] >= count - - # Helper 5/6 - def check_property_5_and_6( - variables: List[LocalVariable], ssavars: List[LocalIRVariable] - ) -> None: - for var in filter(lambda x: x.name, variables): - ssa_vars = [x for x in ssavars if x.non_ssa_version == var] - assert len(ssa_vars) == 1 - ssa_var = ssa_vars[0] - assert var.is_storage == ssa_var.is_storage - if ssa_var.is_storage: - assert len(ssa_var.refers_to) == 1 - assert ssa_var.refers_to[0].location == "reference_to_storage" - - # 5 - check_property_5_and_6(function.parameters, function.parameters_ssa) - - # 6 - check_property_5_and_6(function.returns, function.returns_ssa) - - -def ssa_phi_node_properties(f: Function) -> None: - """Every phi-function should have as many args as predecessors - - This does not apply if the phi-node refers to state variables, - they make use os special phi-nodes for tracking potential values - a state variable can have - """ - for node in f.nodes: - for ssa in node.irs_ssa: - if isinstance(ssa, Phi): - n = len(ssa.read) - if not isinstance(ssa.lvalue, StateIRVariable): - assert len(node.fathers) == n - - -# TODO (hbrodin): This should probably go into another file, not specific to SSA -def dominance_properties(f: Function) -> None: - """Verifies properties related to dominators holds - - 1. Every node have an immediate dominator except entry_node which have none - 2. From every node immediate dominator there is a path via its successors to the node - """ - - def find_path(from_node: Node, to: Node) -> bool: - visited = set() - worklist = list(from_node.sons) - while worklist: - first, *worklist = worklist - if first == to: - return True - visited.add(first) - for successor in first.sons: - if successor not in visited: - worklist.append(successor) - return False - - for node in f.nodes: - if node is f.entry_point: - assert node.immediate_dominator is None - else: - assert node.immediate_dominator is not None - assert find_path(node.immediate_dominator, node) - - -def phi_values_inserted(f: Function) -> None: - """Verifies that phi-values are inserted at the right places - - For every node that has a dominance frontier, any def (including - phi) should be a phi function in its dominance frontier - """ - - def have_phi_for_var( - node: Node, var: Union[StateIRVariable, LocalIRVariable, TemporaryVariableSSA] - ) -> bool: - """Checks if a node has a phi-instruction for var - - The ssa version would ideally be checked, but then - more data flow analysis would be needed, for cases - where a new def for var is introduced before reaching - DF - """ - non_ssa = var.non_ssa_version - for ssa in node.irs_ssa: - if isinstance(ssa, Phi): - if non_ssa in map( - lambda ssa_var: ssa_var.non_ssa_version, - [ - r - for r in ssa.read - if isinstance(r, (StateIRVariable, LocalIRVariable, TemporaryVariableSSA)) - ], - ): - return True - return False - - for node in filter(lambda n: n.dominance_frontier, f.nodes): - for df in node.dominance_frontier: - for ssa in node.irs_ssa: - if isinstance(ssa, OperationWithLValue): - ssa_lvalue = ssa.lvalue - if isinstance( - ssa_lvalue, (StateIRVariable, LocalIRVariable, TemporaryVariableSSA) - ) and is_used_later(node, ssa_lvalue): - assert have_phi_for_var(df, ssa_lvalue) - - -@contextmanager -def select_solc_version(version: Optional[str]) -> None: - """Selects solc version to use for running tests. - - If no version is provided, latest is used.""" - # If no solc_version selected just use the latest avail - if not version: - # This sorts the versions numerically - vers = sorted( - map( - lambda x: (int(x[0]), int(x[1]), int(x[2])), - map(lambda x: x.split(".", 3), solc_select.installed_versions()), - ) - ) - ver = list(vers)[-1] - version = ".".join(map(str, ver)) - solc_select.switch_global_version(version, always_install=True) - yield version - - -@contextmanager -def slither_from_source(source_code: str, solc_version: Optional[str] = None): - """Yields a Slither instance using source_code string and solc_version - - Creates a temporary file and changes the solc-version temporary to solc_version. - """ - - fname = "" - try: - with NamedTemporaryFile(dir=SCRIPT_DIR, mode="w", suffix=".sol", delete=False) as f: - fname = f.name - f.write(source_code) - with select_solc_version(solc_version): - yield Slither(fname) - finally: - pathlib.Path(fname).unlink() - - -def verify_properties_hold(source_code_or_slither: Union[str, Slither]) -> None: - """Ensures that basic properties of SSA hold true""" - - def verify_func(func: Function) -> None: - have_ssa_if_ir(func) - phi_values_inserted(func) - ssa_basic_properties(func) - ssa_phi_node_properties(func) - dominance_properties(func) - - def verify(slither: Slither) -> None: - for cu in slither.compilation_units: - for func in cu.functions_and_modifiers: - _dump_function(func) - verify_func(func) - for contract in cu.contracts: - for f in contract.functions: - if f.is_constructor or f.is_constructor_variables: - _dump_function(f) - verify_func(f) - - if isinstance(source_code_or_slither, Slither): - verify(source_code_or_slither) - else: - slither: Slither - with slither_from_source(source_code_or_slither) as slither: - verify(slither) - - -def _dump_function(f: Function) -> None: - """Helper function to print nodes/ssa ir for a function or modifier""" - print(f"---- {f.name} ----") - for n in f.nodes: - print(n) - for ir in n.irs_ssa: - print(f"\t{ir}") - print("") - - -def _dump_functions(c: Contract) -> None: - """Helper function to print functions and modifiers of a contract""" - for f in c.functions_and_modifiers: - _dump_function(f) - - -def get_filtered_ssa(f: Union[Function, Node], flt: Callable) -> List[Operation]: - """Returns a list of all ssanodes filtered by filter for all nodes in function f""" - if isinstance(f, Function): - return [ssanode for node in f.nodes for ssanode in node.irs_ssa if flt(ssanode)] - - assert isinstance(f, Node) - return [ssanode for ssanode in f.irs_ssa if flt(ssanode)] - - -def get_ssa_of_type(f: Union[Function, Node], ssatype) -> List[Operation]: - """Returns a list of all ssanodes of a specific type for all nodes in function f""" - return get_filtered_ssa(f, lambda ssanode: isinstance(ssanode, ssatype)) - - -def test_multi_write() -> None: - contract = """ - pragma solidity ^0.8.11; - contract Test { - function multi_write(uint val) external pure returns(uint) { - val = 1; - val = 2; - val = 3; - } - }""" - verify_properties_hold(contract) - - -def test_single_branch_phi() -> None: - contract = """ - pragma solidity ^0.8.11; - contract Test { - function single_branch_phi(uint val) external pure returns(uint) { - if (val == 3) { - val = 9; - } - return val; - } - } - """ - verify_properties_hold(contract) - - -def test_basic_phi() -> None: - contract = """ - pragma solidity ^0.8.11; - contract Test { - function basic_phi(uint val) external pure returns(uint) { - if (val == 3) { - val = 9; - } else { - val = 1; - } - return val; - } - } - """ - verify_properties_hold(contract) - - -def test_basic_loop_phi() -> None: - contract = """ - pragma solidity ^0.8.11; - contract Test { - function basic_loop_phi(uint val) external pure returns(uint) { - for (uint i=0;i<128;i++) { - val = val + 1; - } - return val; - } - } - """ - verify_properties_hold(contract) - - -@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -def test_phi_propagation_loop(): - contract = """ - pragma solidity ^0.8.11; - contract Test { - function looping(uint v) external pure returns(uint) { - uint val = 0; - for (uint i=0;i i) { - val = i; - } else { - val = 3; - } - } - return val; - } - } - """ - verify_properties_hold(contract) - - -@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -def test_free_function_properties(): - contract = """ - pragma solidity ^0.8.11; - - function free_looping(uint v) returns(uint) { - uint val = 0; - for (uint i=0;i i) { - val = i; - } else { - val = 3; - } - } - return val; - } - - contract Test {} - """ - verify_properties_hold(contract) - - -def test_ssa_inter_transactional() -> None: - source = """ - pragma solidity ^0.8.11; - contract A { - uint my_var_A; - uint my_var_B; - - function direct_set(uint i) public { - my_var_A = i; - } - - function direct_set_plus_one(uint i) public { - my_var_A = i + 1; - } - - function indirect_set() public { - my_var_B = my_var_A; - } - } - """ - with slither_from_source(source) as slither: - c = slither.contracts[0] - variables = c.variables_as_dict - funcs = c.available_functions_as_dict() - direct_set = funcs["direct_set(uint256)"] - # Skip entry point and go straight to assignment ir - assign1 = direct_set.nodes[1].irs_ssa[0] - assert isinstance(assign1, Assignment) - - assign2 = direct_set.nodes[1].irs_ssa[0] - assert isinstance(assign2, Assignment) - - indirect_set = funcs["indirect_set()"] - phi = indirect_set.entry_point.irs_ssa[0] - assert isinstance(phi, Phi) - # phi rvalues come from 1, initial value of my_var_a and 2, assignment in direct_set - assert len(phi.rvalues) == 3 - assert all(x.non_ssa_version == variables["my_var_A"] for x in phi.rvalues) - assert assign1.lvalue in phi.rvalues - assert assign2.lvalue in phi.rvalues - - -@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -def test_ssa_phi_callbacks(): - source = """ - pragma solidity ^0.8.11; - contract A { - uint my_var_A; - uint my_var_B; - - function direct_set(uint i) public { - my_var_A = i; - } - - function use_a() public { - // Expect a phi-node here - my_var_B = my_var_A; - B b = new B(); - my_var_A = 3; - b.do_stuff(); - // Expect a phi-node here - my_var_B = my_var_A; - } - } - - contract B { - function do_stuff() public returns (uint) { - // This could be calling back into A - } - } - """ - with slither_from_source(source) as slither: - c = slither.get_contract_from_name("A")[0] - _dump_functions(c) - f = [x for x in c.functions if x.name == "use_a"][0] - var_a = [x for x in c.variables if x.name == "my_var_A"][0] - - entry_phi = [ - x - for x in f.entry_point.irs_ssa - if isinstance(x, Phi) and x.lvalue.non_ssa_version == var_a - ][0] - # The four potential sources are: - # 1. initial value - # 2. my_var_A = i; - # 3. my_var_A = 3; - # 4. phi-value after call to b.do_stuff(), which could be reentrant. - assert len(entry_phi.rvalues) == 4 - - # Locate the first high-level call (should be b.do_stuff()) - call_node = [x for y in f.nodes for x in y.irs_ssa if isinstance(x, HighLevelCall)][0] - n = call_node.node - # Get phi-node after call - after_call_phi = n.irs_ssa[n.irs_ssa.index(call_node) + 1] - # The two sources for this phi node is - # 1. my_var_A = i; - # 2. my_var_A = 3; - assert isinstance(after_call_phi, Phi) - assert len(after_call_phi.rvalues) == 2 - - -@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -def test_storage_refers_to(): - """Test the storage aspects of the SSA IR - - When declaring a var as being storage, start tracking what storage it refers_to. - When a phi-node is created, ensure refers_to is propagated to the phi-node. - Assignments also propagate refers_to. - Whenever a ReferenceVariable is the destination of an assignment (e.g. s.v = 10) - below, create additional versions of the variables it refers to record that a a - write was made. In the current implementation, this is referenced by phis. - """ - source = """ - contract A{ - - struct St{ - int v; - } - - St state0; - St state1; - - function f() public{ - St storage s = state0; - if(true){ - s = state1; - } - s.v = 10; - } -} - """ - with slither_from_source(source) as slither: - c = slither.contracts[0] - f = c.functions[0] - - phinodes = get_ssa_of_type(f, Phi) - # Expect 2 in entrypoint (state0/state1 initial values), 1 at 'ENDIF' and two related to the - # ReferenceVariable write s.v = 10. - assert len(phinodes) == 5 - - # Assign s to state0, s to state1, s.v to 10 - assigns = get_ssa_of_type(f, Assignment) - assert len(assigns) == 3 - - # The IR variables have is_storage - assert all(x.lvalue.is_storage for x in assigns if isinstance(x, LocalIRVariable)) - - # s.v ReferenceVariable points to one of the phi vars... - ref0 = [x.lvalue for x in assigns if isinstance(x.lvalue, ReferenceVariable)][0] - sphis = [x for x in phinodes if x.lvalue == ref0.points_to] - assert len(sphis) == 1 - sphi = sphis[0] - - # ...and that phi refers to the two entry phi-values - entryphi = [x for x in phinodes if x.lvalue in sphi.lvalue.refers_to] - assert len(entryphi) == 2 - - # The remaining two phis are the ones recording that write through ReferenceVariable occured - for ephi in entryphi: - phinodes.remove(ephi) - phinodes.remove(sphi) - assert len(phinodes) == 2 - - # And they are recorded in one of the entry phis - assert phinodes[0].lvalue in entryphi[0].rvalues or entryphi[1].rvalues - assert phinodes[1].lvalue in entryphi[0].rvalues or entryphi[1].rvalues - - -@pytest.mark.skipif( - not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" -) -def test_initial_version_exists_for_locals(): - """ - In solidity you can write statements such as - uint a = a + 1, this test ensures that can be handled for local variables. - """ - src = """ - contract C { - function func() internal { - uint a = a + 1; - } - } - """ - with slither_from_source(src, "0.4.0") as slither: - verify_properties_hold(slither) - c = slither.contracts[0] - f = c.functions[0] - - addition = get_ssa_of_type(f, Binary)[0] - assert addition.type == BinaryType.ADDITION - assert isinstance(addition.variable_right, Constant) - a_0 = addition.variable_left - assert a_0.index == 0 - assert a_0.name == "a" - - assignment = get_ssa_of_type(f, Assignment)[0] - a_1 = assignment.lvalue - assert a_1.index == 1 - assert a_1.name == "a" - assert assignment.rvalue == addition.lvalue - - assert a_0.non_ssa_version == a_1.non_ssa_version - - -@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -@pytest.mark.skipif( - not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" -) -def test_initial_version_exists_for_state_variables(): - """ - In solidity you can write statements such as - uint a = a + 1, this test ensures that can be handled for state variables. - """ - src = """ - contract C { - uint a = a + 1; - } - """ - with slither_from_source(src, "0.4.0") as slither: - verify_properties_hold(slither) - c = slither.contracts[0] - f = c.functions[0] # There will be one artificial ctor function for the state vars - - addition = get_ssa_of_type(f, Binary)[0] - assert addition.type == BinaryType.ADDITION - assert isinstance(addition.variable_right, Constant) - a_0 = addition.variable_left - assert isinstance(a_0, StateIRVariable) - assert a_0.name == "a" - - assignment = get_ssa_of_type(f, Assignment)[0] - a_1 = assignment.lvalue - assert isinstance(a_1, StateIRVariable) - assert a_1.index == a_0.index + 1 - assert a_1.name == "a" - assert assignment.rvalue == addition.lvalue - - assert a_0.non_ssa_version == a_1.non_ssa_version - assert isinstance(a_0.non_ssa_version, StateVariable) - - # No conditional/other function interaction so no phis - assert len(get_ssa_of_type(f, Phi)) == 0 - - -@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -def test_initial_version_exists_for_state_variables_function_assign(): - """ - In solidity you can write statements such as - uint a = a + 1, this test ensures that can be handled for local variables. - """ - # TODO (hbrodin): Could be a detector that a is not used in f - src = """ - contract C { - uint a = f(); - - function f() internal returns(uint) { - return a; - } - } - """ - with slither_from_source(src) as slither: - verify_properties_hold(slither) - c = slither.contracts[0] - f, ctor = c.functions - if f.is_constructor_variables: - f, ctor = ctor, f - - # ctor should have a single call to f that assigns to a - # temporary variable, that is then assigned to a - - call = get_ssa_of_type(ctor, InternalCall)[0] - assert call.node.function == f - assign = get_ssa_of_type(ctor, Assignment)[0] - assert assign.rvalue == call.lvalue - assert isinstance(assign.lvalue, StateIRVariable) - assert assign.lvalue.name == "a" - - # f should have a phi node on entry of a0, a1 and should return - # a2 - phi = get_ssa_of_type(f, Phi)[0] - assert len(phi.rvalues) == 2 - assert assign.lvalue in phi.rvalues - - -@pytest.mark.skipif( - not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" -) -def test_return_local_before_assign(): - src = """ - // this require solidity < 0.5 - // a variable can be returned before declared. Ensure it can be - // handled by Slither. - contract A { - function local(bool my_bool) internal returns(uint){ - if(my_bool){ - return a_local; - } - - uint a_local = 10; - } - } - """ - with slither_from_source(src, "0.4.0") as slither: - f = slither.contracts[0].functions[0] - - ret = get_ssa_of_type(f, Return)[0] - assert len(ret.values) == 1 - assert ret.values[0].index == 0 - - assign = get_ssa_of_type(f, Assignment)[0] - assert assign.lvalue.index == 1 - assert assign.lvalue.non_ssa_version == ret.values[0].non_ssa_version - - -@pytest.mark.skipif( - not valid_version("0.5.0"), reason="Solidity version 0.5.0 not available on this platform" -) -def test_shadow_local(): - src = """ - contract A { - // this require solidity 0.5 - function shadowing_local() internal{ - uint local = 0; - { - uint local = 1; - { - uint local = 2; - } - } - } - } - """ - with slither_from_source(src, "0.5.0") as slither: - _dump_functions(slither.contracts[0]) - f = slither.contracts[0].functions[0] - - # Ensure all assignments are to a variable of index 1 - # not using the same IR var. - assert all(map(lambda x: x.lvalue.index == 1, get_ssa_of_type(f, Assignment))) - - -@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -def test_multiple_named_args_returns(): - """Verifies that named arguments and return values have correct versions - - Each arg/ret have an initial version, version 0, and is written once and should - then have version 1. - """ - src = """ - contract A { - function multi(uint arg1, uint arg2) internal returns (uint ret1, uint ret2) { - arg1 = arg1 + 1; - arg2 = arg2 + 2; - ret1 = arg1 + 3; - ret2 = arg2 + 4; - } - }""" - with slither_from_source(src) as slither: - verify_properties_hold(slither) - f = slither.contracts[0].functions[0] - - # Ensure all LocalIRVariables (not TemporaryVariables) have index 1 - assert all( - map( - lambda x: x.lvalue.index == 1 or not isinstance(x.lvalue, LocalIRVariable), - get_ssa_of_type(f, OperationWithLValue), - ) - ) - - -@pytest.mark.xfail(reason="Tests for wanted state of SSA IR, not current.", strict=True) -def test_memory_array(): - src = """ - contract MemArray { - struct A { - uint val1; - uint val2; - } - - function test_array() internal { - A[] memory a= new A[](4); - // Create REF_0 -> a_1[2] - accept_array_entry(a[2]); - - // Create REF_1 -> a_1[3] - accept_array_entry(a[3]); - - A memory alocal; - accept_array_entry(alocal); - - } - - // val_1 = ϕ(val_0, REF_0, REF_1, alocal_1) - // val_0 is an unknown external value - function accept_array_entry(A memory val) public returns (uint) { - uint zero = 0; - b(zero); - // Create REF_2 -> val_1.val1 - return b(val.val1); - } - - function b(uint arg) public returns (uint){ - // arg_1 = ϕ(arg_0, zero_1, REF_2) - return arg + 1; - } - }""" - with slither_from_source(src) as slither: - c = slither.contracts[0] - - ftest_array, faccept, fb = c.functions - - # Locate REF_0/REF_1/alocal (they are all args to the call) - accept_args = [x.arguments[0] for x in get_ssa_of_type(ftest_array, InternalCall)] - - # Check entrypoint of accept_array_entry, it should contain a phi-node - # of expected rvalues - [phi_entry_accept] = get_ssa_of_type(faccept.entry_point, Phi) - for arg in accept_args: - assert arg in phi_entry_accept.rvalues - # NOTE(hbrodin): There should be an additional val_0 in the phi-node. - # That additional val_0 indicates an external caller of this function. - assert len(phi_entry_accept.rvalues) == len(accept_args) + 1 - - # Args used to invoke b - b_args = [x.arguments[0] for x in get_ssa_of_type(faccept, InternalCall)] - - # Check entrypoint of B, it should contain a phi-node of expected - # rvalues - [phi_entry_b] = get_ssa_of_type(fb.entry_point, Phi) - for arg in b_args: - assert arg in phi_entry_b.rvalues - - # NOTE(hbrodin): There should be an additional arg_0 (see comment about phi_entry_accept). - assert len(phi_entry_b.rvalues) == len(b_args) + 1 - - -@pytest.mark.xfail(reason="Tests for wanted state of SSA IR, not current.", strict=True) -def test_storage_array(): - src = """ - contract StorageArray { - struct A { - uint val1; - uint val2; - } - - // NOTE(hbrodin): a is never written, should only become a_0. Same for astorage (astorage_0). Phi-nodes at entry - // should only add new versions of a state variable if it is actually written. - A[] a; - A astorage; - - function test_array() internal { - accept_array_entry(a[2]); - accept_array_entry(a[3]); - accept_array_entry(astorage); - } - - function accept_array_entry(A storage val) internal returns (uint) { - // val is either a[2], a[3] or astorage_0. Ideally this could be identified. - uint five = 5; - - // NOTE(hbrodin): If the following line is enabled, there would ideally be a phi-node representing writes - // to either a or astorage. - //val.val2 = 4; - b(five); - return b(val.val1); - } - - function b(uint value) public returns (uint){ - // Expect a phi-node at the entrypoint - // value_1 = ϕ(value_0, five_0, REF_x), where REF_x is the reference to val.val1 in accept_array_entry. - return value + 1; - } - }""" - with slither_from_source(src) as slither: - c = slither.contracts[0] - _dump_functions(c) - ftest, faccept, fb = c.functions - - # None of a/astorage is written so expect that there are no phi-nodes at entrypoint. - assert len(get_ssa_of_type(ftest.entry_point, Phi)) == 0 - - # Expect all references to start from index 0 (no writes) - assert all(x.variable_left.index == 0 for x in get_ssa_of_type(ftest, Index)) - - [phi_entry_accept] = get_ssa_of_type(faccept.entry_point, Phi) - assert len(phi_entry_accept.rvalues) == 3 # See comment in b above - - [phi_entry_b] = get_ssa_of_type(fb.entry_point, Phi) - assert len(phi_entry_b.rvalues) == 3 # See comment in b above - - -@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -def test_issue_468(): - """ - Ensure issue 468 is corrected as per - https://github.com/crytic/slither/issues/468#issuecomment-620974151 - The one difference is that we allow the phi-function at entry of f to - hold exit state which contains init state and state from branch, which - is a bit redundant. This could be further simplified. - """ - source = """ - contract State { - int state = 0; - function f(int a) public returns (int) { - // phi-node here for state - if (a < 1) { - state += 1; - } - // phi-node here for state - return state; - } - } - """ - with slither_from_source(source) as slither: - c = slither.get_contract_from_name("State")[0] - f = [x for x in c.functions if x.name == "f"][0] - - # Check that there is an entry point phi values for each later value - # plus one additional which is the initial value - entry_ssa = f.entry_point.irs_ssa - assert len(entry_ssa) == 1 - phi_entry = entry_ssa[0] - assert isinstance(phi_entry, Phi) - - # Find the second phi function - endif_node = [x for x in f.nodes if x.type == NodeType.ENDIF][0] - assert len(endif_node.irs_ssa) == 1 - phi_endif = endif_node.irs_ssa[0] - assert isinstance(phi_endif, Phi) - - # Ensure second phi-function contains init-phi and one additional - assert len(phi_endif.rvalues) == 2 - assert phi_entry.lvalue in phi_endif.rvalues - - # Find return-statement and ensure it returns the phi_endif - return_node = [x for x in f.nodes if x.type == NodeType.RETURN][0] - assert len(return_node.irs_ssa) == 1 - ret = return_node.irs_ssa[0] - assert len(ret.values) == 1 - assert phi_endif.lvalue in ret.values - - # Ensure that the phi_endif (which is the end-state for function as well) is in the entry_phi - assert phi_endif.lvalue in phi_entry.rvalues - - -@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -def test_issue_434(): - source = """ - contract Contract { - int public a; - function f() public { - g(); - a += 1; - } - - function e() public { - a -= 1; - } - - function g() public { - e(); - } - } - """ - with slither_from_source(source) as slither: - c = slither.get_contract_from_name("Contract")[0] - - e = [x for x in c.functions if x.name == "e"][0] - f = [x for x in c.functions if x.name == "f"][0] - g = [x for x in c.functions if x.name == "g"][0] - - # Ensure there is a phi-node at the beginning of f and e - phi_entry_e = get_ssa_of_type(e.entry_point, Phi)[0] - phi_entry_f = get_ssa_of_type(f.entry_point, Phi)[0] - # But not at g - assert len(get_ssa_of_type(g, Phi)) == 0 - - # Ensure that the final states of f and e are in the entry-states - add_f = get_filtered_ssa( - f, lambda x: isinstance(x, Binary) and x.type == BinaryType.ADDITION - )[0] - sub_e = get_filtered_ssa( - e, lambda x: isinstance(x, Binary) and x.type == BinaryType.SUBTRACTION - )[0] - assert add_f.lvalue in phi_entry_f.rvalues - assert add_f.lvalue in phi_entry_e.rvalues - assert sub_e.lvalue in phi_entry_f.rvalues - assert sub_e.lvalue in phi_entry_e.rvalues - - # Ensure there is a phi-node after call to g - call = get_ssa_of_type(f, InternalCall)[0] - idx = call.node.irs_ssa.index(call) - aftercall_phi = call.node.irs_ssa[idx + 1] - assert isinstance(aftercall_phi, Phi) - - # Ensure that phi node ^ is used in the addition afterwards - assert aftercall_phi.lvalue in (add_f.variable_left, add_f.variable_right) - - -@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -def test_issue_473(): - source = """ - contract Contract { - function f() public returns (int) { - int a = 1; - if (a > 0) { - a = 2; - } - if (a == 3) { - a = 6; - } - return a; - } - } - """ - with slither_from_source(source) as slither: - c = slither.get_contract_from_name("Contract")[0] - f = c.functions[0] - - phis = get_ssa_of_type(f, Phi) - return_value = get_ssa_of_type(f, Return)[0] - - # There shall be two phi functions - assert len(phis) == 2 - first_phi = phis[0] - second_phi = phis[1] - - # The second phi is the one being returned, if it's the first swap them (iteration order) - if first_phi.lvalue in return_value.values: - first_phi, second_phi = second_phi, first_phi - - # First phi is for [a=1 or a=2] - assert len(first_phi.rvalues) == 2 - - # second is for [a=6 or first phi] - assert first_phi.lvalue in second_phi.rvalues - assert len(second_phi.rvalues) == 2 - - # return is for second phi - assert len(return_value.values) == 1 - assert second_phi.lvalue in return_value.values - - -def test_issue_1748(): - source = """ - contract Contract { - uint[] arr; - function foo(uint i) public { - arr = [1]; - } - } - """ - with slither_from_source(source) as slither: - c = slither.get_contract_from_name("Contract")[0] - f = c.functions[0] - operations = f.slithir_operations - assign_op = operations[0] - assert isinstance(assign_op, InitArray) +# # pylint: disable=too-many-lines +# import pathlib +# from argparse import ArgumentTypeError +# from collections import defaultdict +# from contextlib import contextmanager +# from inspect import getsourcefile +# from tempfile import NamedTemporaryFile +# from typing import Union, List, Optional, Dict, Callable + +# import pytest +# from solc_select import solc_select +# from solc_select.solc_select import valid_version as solc_valid_version + +# from slither import Slither +# from slither.core.cfg.node import Node, NodeType +# from slither.core.declarations import Function, Contract +# from slither.core.variables.local_variable import LocalVariable +# from slither.core.variables.state_variable import StateVariable +# from slither.slithir.operations import ( +# OperationWithLValue, +# Phi, +# Assignment, +# HighLevelCall, +# Return, +# Operation, +# Binary, +# BinaryType, +# InternalCall, +# Index, +# InitArray, +# ) +# from slither.slithir.utils.ssa import is_used_later +# from slither.slithir.variables import ( +# Constant, +# ReferenceVariable, +# LocalIRVariable, +# StateIRVariable, +# TemporaryVariableSSA, +# ) + +# # Directory of currently executing script. Will be used as basis for temporary file names. +# SCRIPT_DIR = pathlib.Path(getsourcefile(lambda: 0)).parent # type:ignore + + +# def valid_version(ver: str) -> bool: +# """Wrapper function to check if the solc-version is valid + +# The solc_select function raises and exception but for checks below, +# only a bool is needed. +# """ +# try: +# solc_valid_version(ver) +# return True +# except ArgumentTypeError: +# return False + + +# def have_ssa_if_ir(function: Function) -> None: +# """Verifies that all nodes in a function that have IR also have SSA IR""" +# for n in function.nodes: +# if n.irs: +# assert n.irs_ssa + + +# # pylint: disable=too-many-branches, too-many-locals +# def ssa_basic_properties(function: Function) -> None: +# """Verifies that basic properties of ssa holds + +# 1. Every name is defined only once +# 2. A l-value is never index zero - there is always a zero-value available for each var +# 3. Every r-value is at least defined at some point +# 4. The number of ssa defs is >= the number of assignments to var +# 5. Function parameters SSA are stored in function.parameters_ssa +# - if function parameter is_storage it refers to a fake variable +# 6. Function returns SSA are stored in function.returns_ssa +# - if function return is_storage it refers to a fake variable +# """ +# ssa_lvalues = set() +# ssa_rvalues = set() +# lvalue_assignments: Dict[str, int] = {} + +# for n in function.nodes: +# for ir in n.irs: +# if isinstance(ir, OperationWithLValue) and ir.lvalue: +# name = ir.lvalue.name +# if name is None: +# continue +# if name in lvalue_assignments: +# lvalue_assignments[name] += 1 +# else: +# lvalue_assignments[name] = 1 + +# for ssa in n.irs_ssa: +# if isinstance(ssa, OperationWithLValue): +# # 1 +# assert ssa.lvalue not in ssa_lvalues +# ssa_lvalues.add(ssa.lvalue) + +# # 2 (if Local/State Var) +# ssa_lvalue = ssa.lvalue +# if isinstance(ssa_lvalue, (StateIRVariable, LocalIRVariable)): +# assert ssa_lvalue.index > 0 + +# for rvalue in filter( +# lambda x: not isinstance(x, (StateIRVariable, Constant)), ssa.read +# ): +# ssa_rvalues.add(rvalue) + +# # 3 +# # Each var can have one non-defined value, the value initially held. Typically, +# # var_0, i_0, state_0 or similar. +# undef_vars = set() +# for rvalue in ssa_rvalues: +# if rvalue not in ssa_lvalues: +# assert rvalue.non_ssa_version not in undef_vars +# undef_vars.add(rvalue.non_ssa_version) + +# # 4 +# ssa_defs: Dict[str, int] = defaultdict(int) +# for v in ssa_lvalues: +# if v and v.name: +# ssa_defs[v.name] += 1 + +# for (k, count) in lvalue_assignments.items(): +# assert ssa_defs[k] >= count + +# # Helper 5/6 +# def check_property_5_and_6( +# variables: List[LocalVariable], ssavars: List[LocalIRVariable] +# ) -> None: +# for var in filter(lambda x: x.name, variables): +# ssa_vars = [x for x in ssavars if x.non_ssa_version == var] +# assert len(ssa_vars) == 1 +# ssa_var = ssa_vars[0] +# assert var.is_storage == ssa_var.is_storage +# if ssa_var.is_storage: +# assert len(ssa_var.refers_to) == 1 +# assert ssa_var.refers_to[0].location == "reference_to_storage" + +# # 5 +# check_property_5_and_6(function.parameters, function.parameters_ssa) + +# # 6 +# check_property_5_and_6(function.returns, function.returns_ssa) + + +# def ssa_phi_node_properties(f: Function) -> None: +# """Every phi-function should have as many args as predecessors + +# This does not apply if the phi-node refers to state variables, +# they make use os special phi-nodes for tracking potential values +# a state variable can have +# """ +# for node in f.nodes: +# for ssa in node.irs_ssa: +# if isinstance(ssa, Phi): +# n = len(ssa.read) +# if not isinstance(ssa.lvalue, StateIRVariable): +# assert len(node.fathers) == n + + +# # TODO (hbrodin): This should probably go into another file, not specific to SSA +# def dominance_properties(f: Function) -> None: +# """Verifies properties related to dominators holds + +# 1. Every node have an immediate dominator except entry_node which have none +# 2. From every node immediate dominator there is a path via its successors to the node +# """ + +# def find_path(from_node: Node, to: Node) -> bool: +# visited = set() +# worklist = list(from_node.sons) +# while worklist: +# first, *worklist = worklist +# if first == to: +# return True +# visited.add(first) +# for successor in first.sons: +# if successor not in visited: +# worklist.append(successor) +# return False + +# for node in f.nodes: +# if node is f.entry_point: +# assert node.immediate_dominator is None +# else: +# assert node.immediate_dominator is not None +# assert find_path(node.immediate_dominator, node) + + +# def phi_values_inserted(f: Function) -> None: +# """Verifies that phi-values are inserted at the right places + +# For every node that has a dominance frontier, any def (including +# phi) should be a phi function in its dominance frontier +# """ + +# def have_phi_for_var( +# node: Node, var: Union[StateIRVariable, LocalIRVariable, TemporaryVariableSSA] +# ) -> bool: +# """Checks if a node has a phi-instruction for var + +# The ssa version would ideally be checked, but then +# more data flow analysis would be needed, for cases +# where a new def for var is introduced before reaching +# DF +# """ +# non_ssa = var.non_ssa_version +# for ssa in node.irs_ssa: +# if isinstance(ssa, Phi): +# if non_ssa in map( +# lambda ssa_var: ssa_var.non_ssa_version, +# [ +# r +# for r in ssa.read +# if isinstance(r, (StateIRVariable, LocalIRVariable, TemporaryVariableSSA)) +# ], +# ): +# return True +# return False + +# for node in filter(lambda n: n.dominance_frontier, f.nodes): +# for df in node.dominance_frontier: +# for ssa in node.irs_ssa: +# if isinstance(ssa, OperationWithLValue): +# ssa_lvalue = ssa.lvalue +# if isinstance( +# ssa_lvalue, (StateIRVariable, LocalIRVariable, TemporaryVariableSSA) +# ) and is_used_later(node, ssa_lvalue): +# assert have_phi_for_var(df, ssa_lvalue) + + + +# @contextmanager +# def slither_from_source(source_code: str, use_solc_version, solc_version: str = "latest"): +# """Yields a Slither instance using source_code string and solc_version + +# Creates a temporary file and changes the solc-version temporary to solc_version. +# """ + +# fname = "" +# try: +# with NamedTemporaryFile(dir=SCRIPT_DIR, mode="w", suffix=".sol", delete=False) as f: +# fname = f.name +# f.write(source_code) +# solc_path = use_solc_version(solc_version) +# yield Slither(fname, solc=solc_path) +# finally: +# pathlib.Path(fname).unlink() + + +# def verify_properties_hold(source_code_or_slither: Union[str, Slither]) -> None: +# """Ensures that basic properties of SSA hold true""" + +# def verify_func(func: Function) -> None: +# have_ssa_if_ir(func) +# phi_values_inserted(func) +# ssa_basic_properties(func) +# ssa_phi_node_properties(func) +# dominance_properties(func) + +# def verify(slither: Slither) -> None: +# for cu in slither.compilation_units: +# for func in cu.functions_and_modifiers: +# _dump_function(func) +# verify_func(func) +# for contract in cu.contracts: +# for f in contract.functions: +# if f.is_constructor or f.is_constructor_variables: +# _dump_function(f) +# verify_func(f) + +# if isinstance(source_code_or_slither, Slither): +# verify(source_code_or_slither) +# else: +# slither: Slither +# with slither_from_source(source_code_or_slither) as slither: +# verify(slither) + + +# def _dump_function(f: Function) -> None: +# """Helper function to print nodes/ssa ir for a function or modifier""" +# print(f"---- {f.name} ----") +# for n in f.nodes: +# print(n) +# for ir in n.irs_ssa: +# print(f"\t{ir}") +# print("") + + +# def _dump_functions(c: Contract) -> None: +# """Helper function to print functions and modifiers of a contract""" +# for f in c.functions_and_modifiers: +# _dump_function(f) + + +# def get_filtered_ssa(f: Union[Function, Node], flt: Callable) -> List[Operation]: +# """Returns a list of all ssanodes filtered by filter for all nodes in function f""" +# if isinstance(f, Function): +# return [ssanode for node in f.nodes for ssanode in node.irs_ssa if flt(ssanode)] + +# assert isinstance(f, Node) +# return [ssanode for ssanode in f.irs_ssa if flt(ssanode)] + + +# def get_ssa_of_type(f: Union[Function, Node], ssatype) -> List[Operation]: +# """Returns a list of all ssanodes of a specific type for all nodes in function f""" +# return get_filtered_ssa(f, lambda ssanode: isinstance(ssanode, ssatype)) + + +# def test_multi_write() -> None: +# contract = """ +# pragma solidity ^0.8.11; +# contract Test { +# function multi_write(uint val) external pure returns(uint) { +# val = 1; +# val = 2; +# val = 3; +# } +# }""" +# verify_properties_hold(contract) + + +# def test_single_branch_phi() -> None: +# contract = """ +# pragma solidity ^0.8.11; +# contract Test { +# function single_branch_phi(uint val) external pure returns(uint) { +# if (val == 3) { +# val = 9; +# } +# return val; +# } +# } +# """ +# verify_properties_hold(contract) + + +# def test_basic_phi() -> None: +# contract = """ +# pragma solidity ^0.8.11; +# contract Test { +# function basic_phi(uint val) external pure returns(uint) { +# if (val == 3) { +# val = 9; +# } else { +# val = 1; +# } +# return val; +# } +# } +# """ +# verify_properties_hold(contract) + + +# def test_basic_loop_phi() -> None: +# contract = """ +# pragma solidity ^0.8.11; +# contract Test { +# function basic_loop_phi(uint val) external pure returns(uint) { +# for (uint i=0;i<128;i++) { +# val = val + 1; +# } +# return val; +# } +# } +# """ +# verify_properties_hold(contract) + + +# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +# def test_phi_propagation_loop(): +# contract = """ +# pragma solidity ^0.8.11; +# contract Test { +# function looping(uint v) external pure returns(uint) { +# uint val = 0; +# for (uint i=0;i i) { +# val = i; +# } else { +# val = 3; +# } +# } +# return val; +# } +# } +# """ +# verify_properties_hold(contract) + + +# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +# def test_free_function_properties(): +# contract = """ +# pragma solidity ^0.8.11; + +# function free_looping(uint v) returns(uint) { +# uint val = 0; +# for (uint i=0;i i) { +# val = i; +# } else { +# val = 3; +# } +# } +# return val; +# } + +# contract Test {} +# """ +# verify_properties_hold(contract) + + +# def test_ssa_inter_transactional() -> None: +# source = """ +# pragma solidity ^0.8.11; +# contract A { +# uint my_var_A; +# uint my_var_B; + +# function direct_set(uint i) public { +# my_var_A = i; +# } + +# function direct_set_plus_one(uint i) public { +# my_var_A = i + 1; +# } + +# function indirect_set() public { +# my_var_B = my_var_A; +# } +# } +# """ +# with slither_from_source(source) as slither: +# c = slither.contracts[0] +# variables = c.variables_as_dict +# funcs = c.available_functions_as_dict() +# direct_set = funcs["direct_set(uint256)"] +# # Skip entry point and go straight to assignment ir +# assign1 = direct_set.nodes[1].irs_ssa[0] +# assert isinstance(assign1, Assignment) + +# assign2 = direct_set.nodes[1].irs_ssa[0] +# assert isinstance(assign2, Assignment) + +# indirect_set = funcs["indirect_set()"] +# phi = indirect_set.entry_point.irs_ssa[0] +# assert isinstance(phi, Phi) +# # phi rvalues come from 1, initial value of my_var_a and 2, assignment in direct_set +# assert len(phi.rvalues) == 3 +# assert all(x.non_ssa_version == variables["my_var_A"] for x in phi.rvalues) +# assert assign1.lvalue in phi.rvalues +# assert assign2.lvalue in phi.rvalues + + +# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +# def test_ssa_phi_callbacks(): +# source = """ +# pragma solidity ^0.8.11; +# contract A { +# uint my_var_A; +# uint my_var_B; + +# function direct_set(uint i) public { +# my_var_A = i; +# } + +# function use_a() public { +# // Expect a phi-node here +# my_var_B = my_var_A; +# B b = new B(); +# my_var_A = 3; +# b.do_stuff(); +# // Expect a phi-node here +# my_var_B = my_var_A; +# } +# } + +# contract B { +# function do_stuff() public returns (uint) { +# // This could be calling back into A +# } +# } +# """ +# with slither_from_source(source) as slither: +# c = slither.get_contract_from_name("A")[0] +# _dump_functions(c) +# f = [x for x in c.functions if x.name == "use_a"][0] +# var_a = [x for x in c.variables if x.name == "my_var_A"][0] + +# entry_phi = [ +# x +# for x in f.entry_point.irs_ssa +# if isinstance(x, Phi) and x.lvalue.non_ssa_version == var_a +# ][0] +# # The four potential sources are: +# # 1. initial value +# # 2. my_var_A = i; +# # 3. my_var_A = 3; +# # 4. phi-value after call to b.do_stuff(), which could be reentrant. +# assert len(entry_phi.rvalues) == 4 + +# # Locate the first high-level call (should be b.do_stuff()) +# call_node = [x for y in f.nodes for x in y.irs_ssa if isinstance(x, HighLevelCall)][0] +# n = call_node.node +# # Get phi-node after call +# after_call_phi = n.irs_ssa[n.irs_ssa.index(call_node) + 1] +# # The two sources for this phi node is +# # 1. my_var_A = i; +# # 2. my_var_A = 3; +# assert isinstance(after_call_phi, Phi) +# assert len(after_call_phi.rvalues) == 2 + + +# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +# def test_storage_refers_to(): +# """Test the storage aspects of the SSA IR + +# When declaring a var as being storage, start tracking what storage it refers_to. +# When a phi-node is created, ensure refers_to is propagated to the phi-node. +# Assignments also propagate refers_to. +# Whenever a ReferenceVariable is the destination of an assignment (e.g. s.v = 10) +# below, create additional versions of the variables it refers to record that a a +# write was made. In the current implementation, this is referenced by phis. +# """ +# source = """ +# contract A{ + +# struct St{ +# int v; +# } + +# St state0; +# St state1; + +# function f() public{ +# St storage s = state0; +# if(true){ +# s = state1; +# } +# s.v = 10; +# } +# } +# """ +# with slither_from_source(source) as slither: +# c = slither.contracts[0] +# f = c.functions[0] + +# phinodes = get_ssa_of_type(f, Phi) +# # Expect 2 in entrypoint (state0/state1 initial values), 1 at 'ENDIF' and two related to the +# # ReferenceVariable write s.v = 10. +# assert len(phinodes) == 5 + +# # Assign s to state0, s to state1, s.v to 10 +# assigns = get_ssa_of_type(f, Assignment) +# assert len(assigns) == 3 + +# # The IR variables have is_storage +# assert all(x.lvalue.is_storage for x in assigns if isinstance(x, LocalIRVariable)) + +# # s.v ReferenceVariable points to one of the phi vars... +# ref0 = [x.lvalue for x in assigns if isinstance(x.lvalue, ReferenceVariable)][0] +# sphis = [x for x in phinodes if x.lvalue == ref0.points_to] +# assert len(sphis) == 1 +# sphi = sphis[0] + +# # ...and that phi refers to the two entry phi-values +# entryphi = [x for x in phinodes if x.lvalue in sphi.lvalue.refers_to] +# assert len(entryphi) == 2 + +# # The remaining two phis are the ones recording that write through ReferenceVariable occured +# for ephi in entryphi: +# phinodes.remove(ephi) +# phinodes.remove(sphi) +# assert len(phinodes) == 2 + +# # And they are recorded in one of the entry phis +# assert phinodes[0].lvalue in entryphi[0].rvalues or entryphi[1].rvalues +# assert phinodes[1].lvalue in entryphi[0].rvalues or entryphi[1].rvalues + + +# @pytest.mark.skipif( +# not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" +# ) +# def test_initial_version_exists_for_locals(): +# """ +# In solidity you can write statements such as +# uint a = a + 1, this test ensures that can be handled for local variables. +# """ +# src = """ +# contract C { +# function func() internal { +# uint a = a + 1; +# } +# } +# """ +# with slither_from_source(src, "0.4.0") as slither: +# verify_properties_hold(slither) +# c = slither.contracts[0] +# f = c.functions[0] + +# addition = get_ssa_of_type(f, Binary)[0] +# assert addition.type == BinaryType.ADDITION +# assert isinstance(addition.variable_right, Constant) +# a_0 = addition.variable_left +# assert a_0.index == 0 +# assert a_0.name == "a" + +# assignment = get_ssa_of_type(f, Assignment)[0] +# a_1 = assignment.lvalue +# assert a_1.index == 1 +# assert a_1.name == "a" +# assert assignment.rvalue == addition.lvalue + +# assert a_0.non_ssa_version == a_1.non_ssa_version + + +# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +# @pytest.mark.skipif( +# not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" +# ) +# def test_initial_version_exists_for_state_variables(): +# """ +# In solidity you can write statements such as +# uint a = a + 1, this test ensures that can be handled for state variables. +# """ +# src = """ +# contract C { +# uint a = a + 1; +# } +# """ +# with slither_from_source(src, "0.4.0") as slither: +# verify_properties_hold(slither) +# c = slither.contracts[0] +# f = c.functions[0] # There will be one artificial ctor function for the state vars + +# addition = get_ssa_of_type(f, Binary)[0] +# assert addition.type == BinaryType.ADDITION +# assert isinstance(addition.variable_right, Constant) +# a_0 = addition.variable_left +# assert isinstance(a_0, StateIRVariable) +# assert a_0.name == "a" + +# assignment = get_ssa_of_type(f, Assignment)[0] +# a_1 = assignment.lvalue +# assert isinstance(a_1, StateIRVariable) +# assert a_1.index == a_0.index + 1 +# assert a_1.name == "a" +# assert assignment.rvalue == addition.lvalue + +# assert a_0.non_ssa_version == a_1.non_ssa_version +# assert isinstance(a_0.non_ssa_version, StateVariable) + +# # No conditional/other function interaction so no phis +# assert len(get_ssa_of_type(f, Phi)) == 0 + + +# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +# def test_initial_version_exists_for_state_variables_function_assign(): +# """ +# In solidity you can write statements such as +# uint a = a + 1, this test ensures that can be handled for local variables. +# """ +# # TODO (hbrodin): Could be a detector that a is not used in f +# src = """ +# contract C { +# uint a = f(); + +# function f() internal returns(uint) { +# return a; +# } +# } +# """ +# with slither_from_source(src) as slither: +# verify_properties_hold(slither) +# c = slither.contracts[0] +# f, ctor = c.functions +# if f.is_constructor_variables: +# f, ctor = ctor, f + +# # ctor should have a single call to f that assigns to a +# # temporary variable, that is then assigned to a + +# call = get_ssa_of_type(ctor, InternalCall)[0] +# assert call.node.function == f +# assign = get_ssa_of_type(ctor, Assignment)[0] +# assert assign.rvalue == call.lvalue +# assert isinstance(assign.lvalue, StateIRVariable) +# assert assign.lvalue.name == "a" + +# # f should have a phi node on entry of a0, a1 and should return +# # a2 +# phi = get_ssa_of_type(f, Phi)[0] +# assert len(phi.rvalues) == 2 +# assert assign.lvalue in phi.rvalues + + +# @pytest.mark.skipif( +# not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" +# ) +# def test_return_local_before_assign(): +# src = """ +# // this require solidity < 0.5 +# // a variable can be returned before declared. Ensure it can be +# // handled by Slither. +# contract A { +# function local(bool my_bool) internal returns(uint){ +# if(my_bool){ +# return a_local; +# } + +# uint a_local = 10; +# } +# } +# """ +# with slither_from_source(src, "0.4.0") as slither: +# f = slither.contracts[0].functions[0] + +# ret = get_ssa_of_type(f, Return)[0] +# assert len(ret.values) == 1 +# assert ret.values[0].index == 0 + +# assign = get_ssa_of_type(f, Assignment)[0] +# assert assign.lvalue.index == 1 +# assert assign.lvalue.non_ssa_version == ret.values[0].non_ssa_version + + +# @pytest.mark.skipif( +# not valid_version("0.5.0"), reason="Solidity version 0.5.0 not available on this platform" +# ) +# def test_shadow_local(): +# src = """ +# contract A { +# // this require solidity 0.5 +# function shadowing_local() internal{ +# uint local = 0; +# { +# uint local = 1; +# { +# uint local = 2; +# } +# } +# } +# } +# """ +# with slither_from_source(src, "0.5.0") as slither: +# _dump_functions(slither.contracts[0]) +# f = slither.contracts[0].functions[0] + +# # Ensure all assignments are to a variable of index 1 +# # not using the same IR var. +# assert all(map(lambda x: x.lvalue.index == 1, get_ssa_of_type(f, Assignment))) + + +# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +# def test_multiple_named_args_returns(): +# """Verifies that named arguments and return values have correct versions + +# Each arg/ret have an initial version, version 0, and is written once and should +# then have version 1. +# """ +# src = """ +# contract A { +# function multi(uint arg1, uint arg2) internal returns (uint ret1, uint ret2) { +# arg1 = arg1 + 1; +# arg2 = arg2 + 2; +# ret1 = arg1 + 3; +# ret2 = arg2 + 4; +# } +# }""" +# with slither_from_source(src) as slither: +# verify_properties_hold(slither) +# f = slither.contracts[0].functions[0] + +# # Ensure all LocalIRVariables (not TemporaryVariables) have index 1 +# assert all( +# map( +# lambda x: x.lvalue.index == 1 or not isinstance(x.lvalue, LocalIRVariable), +# get_ssa_of_type(f, OperationWithLValue), +# ) +# ) + + +# @pytest.mark.xfail(reason="Tests for wanted state of SSA IR, not current.", strict=True) +# def test_memory_array(): +# src = """ +# contract MemArray { +# struct A { +# uint val1; +# uint val2; +# } + +# function test_array() internal { +# A[] memory a= new A[](4); +# // Create REF_0 -> a_1[2] +# accept_array_entry(a[2]); + +# // Create REF_1 -> a_1[3] +# accept_array_entry(a[3]); + +# A memory alocal; +# accept_array_entry(alocal); + +# } + +# // val_1 = ϕ(val_0, REF_0, REF_1, alocal_1) +# // val_0 is an unknown external value +# function accept_array_entry(A memory val) public returns (uint) { +# uint zero = 0; +# b(zero); +# // Create REF_2 -> val_1.val1 +# return b(val.val1); +# } + +# function b(uint arg) public returns (uint){ +# // arg_1 = ϕ(arg_0, zero_1, REF_2) +# return arg + 1; +# } +# }""" +# with slither_from_source(src) as slither: +# c = slither.contracts[0] + +# ftest_array, faccept, fb = c.functions + +# # Locate REF_0/REF_1/alocal (they are all args to the call) +# accept_args = [x.arguments[0] for x in get_ssa_of_type(ftest_array, InternalCall)] + +# # Check entrypoint of accept_array_entry, it should contain a phi-node +# # of expected rvalues +# [phi_entry_accept] = get_ssa_of_type(faccept.entry_point, Phi) +# for arg in accept_args: +# assert arg in phi_entry_accept.rvalues +# # NOTE(hbrodin): There should be an additional val_0 in the phi-node. +# # That additional val_0 indicates an external caller of this function. +# assert len(phi_entry_accept.rvalues) == len(accept_args) + 1 + +# # Args used to invoke b +# b_args = [x.arguments[0] for x in get_ssa_of_type(faccept, InternalCall)] + +# # Check entrypoint of B, it should contain a phi-node of expected +# # rvalues +# [phi_entry_b] = get_ssa_of_type(fb.entry_point, Phi) +# for arg in b_args: +# assert arg in phi_entry_b.rvalues + +# # NOTE(hbrodin): There should be an additional arg_0 (see comment about phi_entry_accept). +# assert len(phi_entry_b.rvalues) == len(b_args) + 1 + + +# @pytest.mark.xfail(reason="Tests for wanted state of SSA IR, not current.", strict=True) +# def test_storage_array(): +# src = """ +# contract StorageArray { +# struct A { +# uint val1; +# uint val2; +# } + +# // NOTE(hbrodin): a is never written, should only become a_0. Same for astorage (astorage_0). Phi-nodes at entry +# // should only add new versions of a state variable if it is actually written. +# A[] a; +# A astorage; + +# function test_array() internal { +# accept_array_entry(a[2]); +# accept_array_entry(a[3]); +# accept_array_entry(astorage); +# } + +# function accept_array_entry(A storage val) internal returns (uint) { +# // val is either a[2], a[3] or astorage_0. Ideally this could be identified. +# uint five = 5; + +# // NOTE(hbrodin): If the following line is enabled, there would ideally be a phi-node representing writes +# // to either a or astorage. +# //val.val2 = 4; +# b(five); +# return b(val.val1); +# } + +# function b(uint value) public returns (uint){ +# // Expect a phi-node at the entrypoint +# // value_1 = ϕ(value_0, five_0, REF_x), where REF_x is the reference to val.val1 in accept_array_entry. +# return value + 1; +# } +# }""" +# with slither_from_source(src) as slither: +# c = slither.contracts[0] +# _dump_functions(c) +# ftest, faccept, fb = c.functions + +# # None of a/astorage is written so expect that there are no phi-nodes at entrypoint. +# assert len(get_ssa_of_type(ftest.entry_point, Phi)) == 0 + +# # Expect all references to start from index 0 (no writes) +# assert all(x.variable_left.index == 0 for x in get_ssa_of_type(ftest, Index)) + +# [phi_entry_accept] = get_ssa_of_type(faccept.entry_point, Phi) +# assert len(phi_entry_accept.rvalues) == 3 # See comment in b above + +# [phi_entry_b] = get_ssa_of_type(fb.entry_point, Phi) +# assert len(phi_entry_b.rvalues) == 3 # See comment in b above + + +# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +# def test_issue_468(): +# """ +# Ensure issue 468 is corrected as per +# https://github.com/crytic/slither/issues/468#issuecomment-620974151 +# The one difference is that we allow the phi-function at entry of f to +# hold exit state which contains init state and state from branch, which +# is a bit redundant. This could be further simplified. +# """ +# source = """ +# contract State { +# int state = 0; +# function f(int a) public returns (int) { +# // phi-node here for state +# if (a < 1) { +# state += 1; +# } +# // phi-node here for state +# return state; +# } +# } +# """ +# with slither_from_source(source) as slither: +# c = slither.get_contract_from_name("State")[0] +# f = [x for x in c.functions if x.name == "f"][0] + +# # Check that there is an entry point phi values for each later value +# # plus one additional which is the initial value +# entry_ssa = f.entry_point.irs_ssa +# assert len(entry_ssa) == 1 +# phi_entry = entry_ssa[0] +# assert isinstance(phi_entry, Phi) + +# # Find the second phi function +# endif_node = [x for x in f.nodes if x.type == NodeType.ENDIF][0] +# assert len(endif_node.irs_ssa) == 1 +# phi_endif = endif_node.irs_ssa[0] +# assert isinstance(phi_endif, Phi) + +# # Ensure second phi-function contains init-phi and one additional +# assert len(phi_endif.rvalues) == 2 +# assert phi_entry.lvalue in phi_endif.rvalues + +# # Find return-statement and ensure it returns the phi_endif +# return_node = [x for x in f.nodes if x.type == NodeType.RETURN][0] +# assert len(return_node.irs_ssa) == 1 +# ret = return_node.irs_ssa[0] +# assert len(ret.values) == 1 +# assert phi_endif.lvalue in ret.values + +# # Ensure that the phi_endif (which is the end-state for function as well) is in the entry_phi +# assert phi_endif.lvalue in phi_entry.rvalues + + +# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +# def test_issue_434(): +# source = """ +# contract Contract { +# int public a; +# function f() public { +# g(); +# a += 1; +# } + +# function e() public { +# a -= 1; +# } + +# function g() public { +# e(); +# } +# } +# """ +# with slither_from_source(source) as slither: +# c = slither.get_contract_from_name("Contract")[0] + +# e = [x for x in c.functions if x.name == "e"][0] +# f = [x for x in c.functions if x.name == "f"][0] +# g = [x for x in c.functions if x.name == "g"][0] + +# # Ensure there is a phi-node at the beginning of f and e +# phi_entry_e = get_ssa_of_type(e.entry_point, Phi)[0] +# phi_entry_f = get_ssa_of_type(f.entry_point, Phi)[0] +# # But not at g +# assert len(get_ssa_of_type(g, Phi)) == 0 + +# # Ensure that the final states of f and e are in the entry-states +# add_f = get_filtered_ssa( +# f, lambda x: isinstance(x, Binary) and x.type == BinaryType.ADDITION +# )[0] +# sub_e = get_filtered_ssa( +# e, lambda x: isinstance(x, Binary) and x.type == BinaryType.SUBTRACTION +# )[0] +# assert add_f.lvalue in phi_entry_f.rvalues +# assert add_f.lvalue in phi_entry_e.rvalues +# assert sub_e.lvalue in phi_entry_f.rvalues +# assert sub_e.lvalue in phi_entry_e.rvalues + +# # Ensure there is a phi-node after call to g +# call = get_ssa_of_type(f, InternalCall)[0] +# idx = call.node.irs_ssa.index(call) +# aftercall_phi = call.node.irs_ssa[idx + 1] +# assert isinstance(aftercall_phi, Phi) + +# # Ensure that phi node ^ is used in the addition afterwards +# assert aftercall_phi.lvalue in (add_f.variable_left, add_f.variable_right) + + +# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +# def test_issue_473(): +# source = """ +# contract Contract { +# function f() public returns (int) { +# int a = 1; +# if (a > 0) { +# a = 2; +# } +# if (a == 3) { +# a = 6; +# } +# return a; +# } +# } +# """ +# with slither_from_source(source) as slither: +# c = slither.get_contract_from_name("Contract")[0] +# f = c.functions[0] + +# phis = get_ssa_of_type(f, Phi) +# return_value = get_ssa_of_type(f, Return)[0] + +# # There shall be two phi functions +# assert len(phis) == 2 +# first_phi = phis[0] +# second_phi = phis[1] + +# # The second phi is the one being returned, if it's the first swap them (iteration order) +# if first_phi.lvalue in return_value.values: +# first_phi, second_phi = second_phi, first_phi + +# # First phi is for [a=1 or a=2] +# assert len(first_phi.rvalues) == 2 + +# # second is for [a=6 or first phi] +# assert first_phi.lvalue in second_phi.rvalues +# assert len(second_phi.rvalues) == 2 + +# # return is for second phi +# assert len(return_value.values) == 1 +# assert second_phi.lvalue in return_value.values + + +# def test_issue_1748(): +# source = """ +# contract Contract { +# uint[] arr; +# function foo(uint i) public { +# arr = [1]; +# } +# } +# """ +# with slither_from_source(source) as slither: +# c = slither.get_contract_from_name("Contract")[0] +# f = c.functions[0] +# operations = f.slithir_operations +# assign_op = operations[0] +# assert isinstance(assign_op, InitArray) diff --git a/tests/unit/slithir/test_ternary_expressions.py b/tests/unit/slithir/test_ternary_expressions.py index 376048e1d..3fb5159f7 100644 --- a/tests/unit/slithir/test_ternary_expressions.py +++ b/tests/unit/slithir/test_ternary_expressions.py @@ -8,10 +8,10 @@ from slither.core.expressions import AssignmentOperation, TupleExpression TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" # pylint: disable=too-many-nested-blocks -def test_ternary_conversions() -> None: +def test_ternary_conversions(use_solc_version) -> None: """This tests that true and false sons define the same number of variables that the father node declares""" - solc_select.switch_global_version("0.8.0", always_install=True) - slither = Slither(Path(TEST_DATA_DIR, "ternary_expressions.sol").as_posix()) + solc_path = next(use_solc_version("0.8.0")) + slither = Slither(Path(TEST_DATA_DIR, "ternary_expressions.sol").as_posix(), solc=solc_path) for contract in slither.contracts: for function in contract.functions: vars_declared = 0 diff --git a/tests/unit/utils/test_code_generation.py b/tests/unit/utils/test_code_generation.py index 679489634..d4c40f42f 100644 --- a/tests/unit/utils/test_code_generation.py +++ b/tests/unit/utils/test_code_generation.py @@ -9,10 +9,10 @@ from slither.utils.code_generation import ( TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" / "code_generation" -def test_interface_generation() -> None: - solc_select.switch_global_version("0.8.4", always_install=True) +def test_interface_generation(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.4")) - sl = Slither(Path(TEST_DATA_DIR, "CodeGeneration.sol").as_posix()) + sl = Slither(Path(TEST_DATA_DIR, "CodeGeneration.sol").as_posix(), solc=solc_path) actual = generate_interface(sl.get_contract_from_name("TestContract")[0]) expected_path = Path(TEST_DATA_DIR, "TEST_generated_code.sol").as_posix() diff --git a/tests/unit/utils/test_functions_ids.py b/tests/unit/utils/test_functions_ids.py index c944c5473..e6ca9f539 100644 --- a/tests/unit/utils/test_functions_ids.py +++ b/tests/unit/utils/test_functions_ids.py @@ -41,10 +41,10 @@ signatures = { TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" -def test_functions_ids() -> None: - solc_select.switch_global_version("0.7.0", always_install=True) +def test_functions_ids(use_solc_version) -> None: + solc_path = next(use_solc_version("0.7.0")) file = Path(TEST_DATA_DIR, "functions_ids.sol").as_posix() - sl = Slither(file) + sl = Slither(file, solc=solc_path) contracts_c = sl.get_contract_from_name("C") assert len(contracts_c) == 1 contract_c = contracts_c[0] diff --git a/tests/unit/utils/test_type_helpers.py b/tests/unit/utils/test_type_helpers.py index b6e913d33..6a71a0a19 100644 --- a/tests/unit/utils/test_type_helpers.py +++ b/tests/unit/utils/test_type_helpers.py @@ -5,9 +5,9 @@ from slither import Slither TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" -def test_function_id_rec_structure() -> None: - solc_select.switch_global_version("0.8.0", always_install=True) - slither = Slither(Path(TEST_DATA_DIR, "type_helpers.sol").as_posix()) +def test_function_id_rec_structure(use_solc_version) -> None: + solc_path = next(use_solc_version("0.8.0")) + slither = Slither(Path(TEST_DATA_DIR, "type_helpers.sol").as_posix(), solc=solc_path) for compilation_unit in slither.compilation_units: for function in compilation_unit.functions: assert function.solidity_signature From 40239751c264ea850335b9789e7fbe23b42e47b3 Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 28 Mar 2023 12:23:45 -0500 Subject: [PATCH 020/220] Fix handling of dynamic `string` and `bytes` --- slither/utils/code_generation.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index 34c489b74..cd72e6c8f 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -6,7 +6,7 @@ from slither.utils.type import ( export_nested_types_from_variable, export_return_type_from_variable, ) -from slither.core.solidity_types import UserDefinedType, MappingType, ArrayType, ElementaryType +from slither.core.solidity_types import Type, UserDefinedType, MappingType, ArrayType, ElementaryType from slither.core.declarations import Structure, Enum, Contract if TYPE_CHECKING: @@ -73,6 +73,7 @@ def generate_interface_variable_signature( ] else: _, params, _ = var.signature + params = [p + " memory" if p in ["bytes", "string"] else p for p in params] returns = [] _type = var.type while isinstance(_type, MappingType): @@ -80,7 +81,7 @@ def generate_interface_variable_signature( while isinstance(_type, (ArrayType, UserDefinedType)): _type = _type.type ret = str(_type) - if isinstance(_type, Structure): + if isinstance(_type, Structure) or (isinstance(_type, Type) and _type.is_dynamic): ret += " memory" elif isinstance(_type, Contract): ret = "address" @@ -127,6 +128,8 @@ def generate_interface_function_signature( if isinstance(ret.type, UserDefinedType) and isinstance(ret.type.type, (Structure, Enum)) else "address" if isinstance(ret.type, UserDefinedType) and isinstance(ret.type.type, Contract) + else f"{ret.type} {ret.location}" + if ret.type.is_dynamic else str(ret.type) for ret in func.returns ] @@ -144,6 +147,8 @@ def generate_interface_function_signature( and isinstance(param.type.type, (Structure, Enum)) else "address" if isinstance(param.type, UserDefinedType) and isinstance(param.type.type, Contract) + else f"{param.type} {param.location}" + if param.type.is_dynamic else str(param.type) for param in func.parameters ] @@ -182,7 +187,7 @@ def generate_struct_interface_str(struct: "Structure", indent: int = 0) -> str: definition += f"{spaces} address {elem.name};\n" else: definition += f"{spaces} {elem.type} {elem.name};\n" - definition += f"{spaces}\n" + definition += f"{spaces}}}\n" return definition From 07fcb5c1497a985b328beaf2d5a199fe8da92d0a Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 28 Mar 2023 14:18:26 -0500 Subject: [PATCH 021/220] simplify using reviewer suggestions --- Makefile | 9 ++-- tests/conftest.py | 31 +++++-------- tests/e2e/compilation/test_resolution.py | 9 ++-- tests/tools/read-storage/test_read_storage.py | 4 +- tests/unit/core/test_arithmetic.py | 5 +-- tests/unit/core/test_code_comments.py | 18 +++++--- tests/unit/core/test_constant_folding.py | 20 +++++---- tests/unit/core/test_contract_declaration.py | 21 +++++---- tests/unit/core/test_function_declaration.py | 17 ++++---- tests/unit/core/test_source_mapping.py | 12 +++--- tests/unit/core/test_storage_layout.py | 7 ++- tests/unit/core/test_using_for.py | 43 +++++++++++-------- tests/unit/slithir/test_operation_reads.py | 5 +-- tests/unit/slithir/test_ssa_generation.py | 5 +-- .../unit/slithir/test_ternary_expressions.py | 4 +- tests/unit/utils/test_code_generation.py | 5 +-- tests/unit/utils/test_functions_ids.py | 5 +-- tests/unit/utils/test_type_helpers.py | 5 +-- 18 files changed, 112 insertions(+), 113 deletions(-) diff --git a/Makefile b/Makefile index cc102c958..a94c3eeb8 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ SHELL := /bin/bash PY_MODULE := slither +TEST_MODULE := tests ALL_PY_SRCS := $(shell find $(PY_MODULE) -name '*.py') \ $(shell find test -name '*.py') @@ -33,7 +34,7 @@ ifneq ($(TESTS),) COV_ARGS := else TEST_ARGS := -n auto - COV_ARGS := --cov-append # --fail-under 100 + COV_ARGS := # --fail-under 100 endif .PHONY: all @@ -56,15 +57,15 @@ $(VENV)/pyvenv.cfg: pyproject.toml .PHONY: lint lint: $(VENV)/pyvenv.cfg . $(VENV_BIN)/activate && \ - black --check $(ALL_PY_SRCS) && \ - pylint $(ALL_PY_SRCS) + black --check . && \ + pylint $(PY_MODULE) $(TEST_MODULE) # ruff $(ALL_PY_SRCS) && \ # mypy $(PY_MODULE) && .PHONY: reformat reformat: . $(VENV_BIN)/activate && \ - black $(PY_MODULE) + black . .PHONY: test tests test tests: $(VENV)/pyvenv.cfg diff --git a/tests/conftest.py b/tests/conftest.py index bf15b27d1..63f40b672 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,26 +2,15 @@ import pytest from filelock import FileLock from solc_select import solc_select -@pytest.fixture(scope="session") -def solc_versions_installed(): - """List of solc versions available in the test environment.""" - return [] - -@pytest.fixture(scope="session", autouse=True) -def register_solc_versions_installed(solc_versions_installed): - solc_versions_installed.extend(solc_select.installed_versions()) @pytest.fixture(scope="session") -def use_solc_version(request, solc_versions_installed): - def _use_solc_version(version): - print(version) - if version not in solc_versions_installed: - print("Installing solc version", version) - solc_select.install_artifacts([version]) - artifact_path = solc_select.artifact_path(version) - lock = FileLock(artifact_path) - try: - yield artifact_path - finally: - lock.release() - return _use_solc_version +def solc_binary_path(): + def inner(version): + lock = FileLock(f"{version}.lock", timeout=60) + with lock: + if not solc_select.artifact_path(version).exists(): + print("Installing solc version", version) + solc_select.install_artifacts([version]) + return solc_select.artifact_path(version) + + return inner diff --git a/tests/e2e/compilation/test_resolution.py b/tests/e2e/compilation/test_resolution.py index 3444af2e9..71edaa143 100644 --- a/tests/e2e/compilation/test_resolution.py +++ b/tests/e2e/compilation/test_resolution.py @@ -3,7 +3,6 @@ import pytest from crytic_compile import CryticCompile from crytic_compile.platform.solc_standard_json import SolcStandardJson -from solc_select import solc_select from slither import Slither @@ -24,8 +23,8 @@ def test_node_modules() -> None: _run_all_detectors(slither) -def test_contract_name_collision(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.0")) +def test_contract_name_collision(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.0") standard_json = SolcStandardJson() standard_json.add_source_file( Path(TEST_DATA_DIR, "test_contract_name_collisions", "a.sol").as_posix() @@ -40,7 +39,7 @@ def test_contract_name_collision(use_solc_version) -> None: _run_all_detectors(slither) -def test_cycle(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.0")) +def test_cycle(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.0") slither = Slither(Path(TEST_DATA_DIR, "test_cyclic_import", "a.sol").as_posix(), solc=solc_path) _run_all_detectors(slither) diff --git a/tests/tools/read-storage/test_read_storage.py b/tests/tools/read-storage/test_read_storage.py index 3b83df855..6d2ab007d 100644 --- a/tests/tools/read-storage/test_read_storage.py +++ b/tests/tools/read-storage/test_read_storage.py @@ -90,8 +90,8 @@ def deploy_contract(w3, ganache, contract_bin, contract_abi) -> Contract: # pylint: disable=too-many-locals @pytest.mark.usefixtures("web3", "ganache") -def test_read_storage(web3, ganache, use_solc_version) -> None: - solc_path = next(use_solc_version(version="0.8.10")) +def test_read_storage(web3, ganache, solc_binary_path) -> None: + solc_path = solc_binary_path(version="0.8.10") assert web3.is_connected() bin_path = Path(TEST_DATA_DIR, "StorageLayout.bin").as_posix() diff --git a/tests/unit/core/test_arithmetic.py b/tests/unit/core/test_arithmetic.py index 6e7843ea0..6de63d767 100644 --- a/tests/unit/core/test_arithmetic.py +++ b/tests/unit/core/test_arithmetic.py @@ -1,5 +1,4 @@ from pathlib import Path -from solc_select import solc_select from slither import Slither from slither.utils.arithmetic import unchecked_arithemtic_usage @@ -8,8 +7,8 @@ from slither.utils.arithmetic import unchecked_arithemtic_usage TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" / "arithmetic_usage" -def test_arithmetic_usage(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.15")) +def test_arithmetic_usage(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.15") slither = Slither(Path(TEST_DATA_DIR, "test.sol").as_posix(), solc=solc_path) assert { diff --git a/tests/unit/core/test_code_comments.py b/tests/unit/core/test_code_comments.py index 4fbbae658..2dd07caf0 100644 --- a/tests/unit/core/test_code_comments.py +++ b/tests/unit/core/test_code_comments.py @@ -8,8 +8,8 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" CUSTOM_COMMENTS_TEST_DATA_DIR = Path(TEST_DATA_DIR, "custom_comments") -def test_upgradeable_comments(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.10")) +def test_upgradeable_comments(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.10") slither = Slither(Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "upgrade.sol").as_posix(), solc=solc_path) compilation_unit = slither.compilation_units[0] proxy = compilation_unit.get_contract_from_name("Proxy")[0] @@ -27,11 +27,13 @@ def test_upgradeable_comments(use_solc_version) -> None: assert v1.upgradeable_version == "version_1" -def test_contract_comments(use_solc_version) -> None: +def test_contract_comments(solc_binary_path) -> None: comments = " @title Test Contract\n @dev Test comment" - solc_path = next(use_solc_version("0.8.10")) - slither = Slither(Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "contract_comment.sol").as_posix(), solc=solc_path) + solc_path = solc_binary_path("0.8.10") + slither = Slither( + Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "contract_comment.sol").as_posix(), solc=solc_path + ) compilation_unit = slither.compilation_units[0] contract = compilation_unit.get_contract_from_name("A")[0] @@ -40,8 +42,10 @@ def test_contract_comments(use_solc_version) -> None: # Old solc versions have a different parsing of comments # the initial space (after *) is also not kept on every line comments = "@title Test Contract\n@dev Test comment" - solc_path = next(use_solc_version("0.5.16")) - slither = Slither(Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "contract_comment.sol").as_posix(), solc=solc_path) + solc_path = solc_binary_path("0.5.16") + slither = Slither( + Path(CUSTOM_COMMENTS_TEST_DATA_DIR, "contract_comment.sol").as_posix(), solc=solc_path + ) compilation_unit = slither.compilation_units[0] contract = compilation_unit.get_contract_from_name("A")[0] diff --git a/tests/unit/core/test_constant_folding.py b/tests/unit/core/test_constant_folding.py index d01b35dc0..a572987a4 100644 --- a/tests/unit/core/test_constant_folding.py +++ b/tests/unit/core/test_constant_folding.py @@ -6,15 +6,17 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" CONSTANT_FOLDING_TEST_ROOT = Path(TEST_DATA_DIR, "constant_folding") -def test_constant_folding_unary(use_solc_version): - solc_path = next(use_solc_version("0.8.0")) +def test_constant_folding_unary(solc_binary_path): + solc_path = solc_binary_path("0.8.0") file = Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_unary.sol").as_posix() Slither(file, solc=solc_path) -def test_constant_folding_rational(use_solc_version): - solc_path = next(use_solc_version("0.8.0")) - s = Slither(Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_rational.sol").as_posix(), solc=solc_path) +def test_constant_folding_rational(solc_binary_path): + solc_path = solc_binary_path("0.8.0") + s = Slither( + Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_rational.sol").as_posix(), solc=solc_path + ) contract = s.get_contract_from_name("C")[0] variable_a = contract.get_state_variable_from_name("a") @@ -52,9 +54,11 @@ def test_constant_folding_rational(use_solc_version): assert str(ConstantFolding(variable_g.expression, "int64").result()) == "-7" -def test_constant_folding_binary_expressions(use_solc_version): - solc_path = next(use_solc_version("0.8.0")) - sl = Slither(Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_binop.sol").as_posix(), solc=solc_path) +def test_constant_folding_binary_expressions(solc_binary_path): + solc_path = solc_binary_path("0.8.0") + sl = Slither( + Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_binop.sol").as_posix(), solc=solc_path + ) contract = sl.get_contract_from_name("BinOp")[0] variable_a = contract.get_state_variable_from_name("a") diff --git a/tests/unit/core/test_contract_declaration.py b/tests/unit/core/test_contract_declaration.py index 3c1e7175e..776082935 100644 --- a/tests/unit/core/test_contract_declaration.py +++ b/tests/unit/core/test_contract_declaration.py @@ -1,6 +1,5 @@ from pathlib import Path -from solc_select import solc_select from slither import Slither from slither.core.variables.state_variable import StateVariable @@ -9,26 +8,30 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" CONTRACT_DECL_TEST_ROOT = Path(TEST_DATA_DIR, "contract_declaration") -def test_abstract_contract(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.0")) +def test_abstract_contract(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.0") slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "abstract.sol").as_posix(), solc=solc_path) assert not slither.contracts[0].is_fully_implemented - solc_path = next(use_solc_version("0.5.0")) - slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "implicit_abstract.sol").as_posix(), solc=solc_path) + solc_path = solc_binary_path("0.5.0") + slither = Slither( + Path(CONTRACT_DECL_TEST_ROOT, "implicit_abstract.sol").as_posix(), solc=solc_path + ) assert not slither.contracts[0].is_fully_implemented slither = Slither( Path(CONTRACT_DECL_TEST_ROOT, "implicit_abstract.sol").as_posix(), solc_force_legacy_json=True, - solc=solc_path + solc=solc_path, ) assert not slither.contracts[0].is_fully_implemented -def test_private_variable(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.15")) - slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "private_variable.sol").as_posix(), solc=solc_path) +def test_private_variable(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.15") + slither = Slither( + Path(CONTRACT_DECL_TEST_ROOT, "private_variable.sol").as_posix(), solc=solc_path + ) contract_c = slither.get_contract_from_name("C")[0] f = contract_c.functions[0] var_read = f.variables_read[0] diff --git a/tests/unit/core/test_function_declaration.py b/tests/unit/core/test_function_declaration.py index 4faa9d919..651f449de 100644 --- a/tests/unit/core/test_function_declaration.py +++ b/tests/unit/core/test_function_declaration.py @@ -5,7 +5,6 @@ tests that `tests/test_function.sol` gets translated into correct and that these objects behave correctly. """ from pathlib import Path -from solc_select import solc_select from slither import Slither from slither.core.declarations.function import FunctionType @@ -15,9 +14,9 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" FUNC_DELC_TEST_ROOT = Path(TEST_DATA_DIR, "function_declaration") -def test_functions(use_solc_version): +def test_functions(solc_binary_path): # pylint: disable=too-many-statements - solc_path = next(use_solc_version("0.6.12")) + solc_path = solc_binary_path("0.6.12") file = Path(FUNC_DELC_TEST_ROOT, "test_function.sol").as_posix() slither = Slither(file, solc=solc_path) functions = slither.get_contract_from_name("TestFunction")[0].available_functions_as_dict() @@ -248,8 +247,8 @@ def test_functions(use_solc_version): assert f.return_type[0] == ElementaryType("bool") -def test_function_can_send_eth(use_solc_version): - solc_path = next(use_solc_version("0.6.12")) +def test_function_can_send_eth(solc_binary_path): + solc_path = solc_binary_path("0.6.12") file = Path(FUNC_DELC_TEST_ROOT, "test_function.sol").as_posix() slither = Slither(file, solc=solc_path) compilation_unit = slither.compilation_units[0] @@ -273,8 +272,8 @@ def test_function_can_send_eth(use_solc_version): assert functions["highlevel_call_via_external()"].can_send_eth() is False -def test_reentrant(use_solc_version): - solc_path = next(use_solc_version("0.8.10")) +def test_reentrant(solc_binary_path): + solc_path = solc_binary_path("0.8.10") file = Path(FUNC_DELC_TEST_ROOT, "test_function_reentrant.sol").as_posix() slither = Slither(file, solc=solc_path) compilation_unit = slither.compilation_units[0] @@ -290,8 +289,8 @@ def test_reentrant(use_solc_version): assert functions["internal_and_reentrant()"].is_reentrant -def test_public_variable(use_solc_version) -> None: - solc_path = next(use_solc_version("0.6.12")) +def test_public_variable(solc_binary_path) -> None: + solc_path = solc_binary_path("0.6.12") file = Path(FUNC_DELC_TEST_ROOT, "test_function.sol").as_posix() slither = Slither(file, solc=solc_path) contracts = slither.get_contract_from_name("TestFunction") diff --git a/tests/unit/core/test_source_mapping.py b/tests/unit/core/test_source_mapping.py index 2dd8c2435..1eec9d32a 100644 --- a/tests/unit/core/test_source_mapping.py +++ b/tests/unit/core/test_source_mapping.py @@ -8,8 +8,8 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" SRC_MAPPING_TEST_ROOT = Path(TEST_DATA_DIR, "src_mapping") -def test_source_mapping(use_solc_version): - solc_path = next(use_solc_version("0.6.12")) +def test_source_mapping(solc_binary_path): + solc_path = solc_binary_path("0.6.12") file = Path(SRC_MAPPING_TEST_ROOT, "inheritance.sol").as_posix() slither = Slither(file, solc=solc_path) @@ -78,11 +78,11 @@ def _sort_references_lines(refs: list) -> list: return sorted([ref.lines[0] for ref in refs]) -def test_references_user_defined_aliases(use_solc_version): +def test_references_user_defined_aliases(solc_binary_path): """ Tests if references are filled correctly for user defined aliases (declared using "type [...] is [...]" statement). """ - solc_path = next(use_solc_version("0.8.16")) + solc_path = solc_binary_path("0.8.16") file = Path(SRC_MAPPING_TEST_ROOT, "ReferencesUserDefinedAliases.sol").as_posix() slither = Slither(file, solc=solc_path) @@ -101,11 +101,11 @@ def test_references_user_defined_aliases(use_solc_version): assert lines == [13, 16] -def test_references_user_defined_types_when_casting(use_solc_version): +def test_references_user_defined_types_when_casting(solc_binary_path): """ Tests if references are filled correctly for user defined types in case of casting. """ - solc_path = next(use_solc_version("0.8.16")) + solc_path = solc_binary_path("0.8.16") file = Path(SRC_MAPPING_TEST_ROOT, "ReferencesUserDefinedTypesCasting.sol").as_posix() slither = Slither(file, solc=solc_path) diff --git a/tests/unit/core/test_storage_layout.py b/tests/unit/core/test_storage_layout.py index fd21ce009..3337eb0f7 100644 --- a/tests/unit/core/test_storage_layout.py +++ b/tests/unit/core/test_storage_layout.py @@ -1,16 +1,15 @@ import json from pathlib import Path from subprocess import PIPE, Popen -from solc_select import solc_select from slither import Slither TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" STORAGE_TEST_ROOT = Path(TEST_DATA_DIR, "storage_layout") -def test_storage_layout(use_solc_version): +def test_storage_layout(solc_binary_path): # the storage layout has not yet changed between solidity versions so we will test with one version of the compiler - solc_path = next(use_solc_version("0.8.10")) + solc_path = solc_binary_path("0.8.10") test_item = Path(STORAGE_TEST_ROOT, "storage_layout-0.8.10.sol").as_posix() sl = Slither(test_item, disallow_partial=True, solc=solc_path) @@ -35,4 +34,4 @@ def test_storage_layout(use_solc_version): except KeyError as e: print(f"not found {e} ") process.communicate() - assert process.returncode == 0 \ No newline at end of file + assert process.returncode == 0 diff --git a/tests/unit/core/test_using_for.py b/tests/unit/core/test_using_for.py index 7b0e2d1d6..ebba72eef 100644 --- a/tests/unit/core/test_using_for.py +++ b/tests/unit/core/test_using_for.py @@ -1,7 +1,6 @@ from pathlib import Path from crytic_compile import CryticCompile from crytic_compile.platform.solc_standard_json import SolcStandardJson -from solc_select import solc_select from slither import Slither from slither.slithir.operations import InternalCall, LibraryCall @@ -12,8 +11,8 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" USING_FOR_TEST_DATA_DIR = Path(TEST_DATA_DIR, "using_for") -def test_using_for_global_collision(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.15")) +def test_using_for_global_collision(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.15") standard_json = SolcStandardJson() for source_file in Path(USING_FOR_TEST_DATA_DIR, "using_for_global_collision").rglob("*.sol"): standard_json.add_source_file(Path(source_file).as_posix()) @@ -22,9 +21,11 @@ def test_using_for_global_collision(use_solc_version) -> None: _run_all_detectors(sl) -def test_using_for_top_level_same_name(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.15")) - slither = Slither(Path(USING_FOR_TEST_DATA_DIR, "using-for-3-0.8.0.sol").as_posix(), solc=solc_path) +def test_using_for_top_level_same_name(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.15") + slither = Slither( + Path(USING_FOR_TEST_DATA_DIR, "using-for-3-0.8.0.sol").as_posix(), solc=solc_path + ) contract_c = slither.get_contract_from_name("C")[0] libCall = contract_c.get_function_from_full_name("libCall(uint256)") for ir in libCall.all_slithir_operations(): @@ -33,9 +34,11 @@ def test_using_for_top_level_same_name(use_solc_version) -> None: assert False -def test_using_for_top_level_implicit_conversion(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.15")) - slither = Slither(Path(USING_FOR_TEST_DATA_DIR, "using-for-4-0.8.0.sol").as_posix(), solc=solc_path) +def test_using_for_top_level_implicit_conversion(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.15") + slither = Slither( + Path(USING_FOR_TEST_DATA_DIR, "using-for-4-0.8.0.sol").as_posix(), solc=solc_path + ) contract_c = slither.get_contract_from_name("C")[0] libCall = contract_c.get_function_from_full_name("libCall(uint16)") for ir in libCall.all_slithir_operations(): @@ -44,10 +47,11 @@ def test_using_for_top_level_implicit_conversion(use_solc_version) -> None: assert False -def test_using_for_alias_top_level(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.15")) +def test_using_for_alias_top_level(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.15") slither = Slither( - Path(USING_FOR_TEST_DATA_DIR, "using-for-alias-top-level-0.8.0.sol").as_posix(), solc=solc_path + Path(USING_FOR_TEST_DATA_DIR, "using-for-alias-top-level-0.8.0.sol").as_posix(), + solc=solc_path, ) contract_c = slither.get_contract_from_name("C")[0] libCall = contract_c.get_function_from_full_name("libCall(uint256)") @@ -64,10 +68,11 @@ def test_using_for_alias_top_level(use_solc_version) -> None: assert False -def test_using_for_alias_contract(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.15")) +def test_using_for_alias_contract(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.15") slither = Slither( - Path(USING_FOR_TEST_DATA_DIR, "using-for-alias-contract-0.8.0.sol").as_posix(), solc=solc_path + Path(USING_FOR_TEST_DATA_DIR, "using-for-alias-contract-0.8.0.sol").as_posix(), + solc=solc_path, ) contract_c = slither.get_contract_from_name("C")[0] libCall = contract_c.get_function_from_full_name("libCall(uint256)") @@ -84,9 +89,11 @@ def test_using_for_alias_contract(use_solc_version) -> None: assert False -def test_using_for_in_library(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.15")) - slither = Slither(Path(USING_FOR_TEST_DATA_DIR, "using-for-in-library-0.8.0.sol").as_posix(), solc=solc_path) +def test_using_for_in_library(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.15") + slither = Slither( + Path(USING_FOR_TEST_DATA_DIR, "using-for-in-library-0.8.0.sol").as_posix(), solc=solc_path + ) contract_c = slither.get_contract_from_name("A")[0] libCall = contract_c.get_function_from_full_name("a(uint256)") for ir in libCall.all_slithir_operations(): diff --git a/tests/unit/slithir/test_operation_reads.py b/tests/unit/slithir/test_operation_reads.py index 10ae47404..fc3018cc8 100644 --- a/tests/unit/slithir/test_operation_reads.py +++ b/tests/unit/slithir/test_operation_reads.py @@ -1,6 +1,5 @@ from pathlib import Path from collections import namedtuple -from solc_select import solc_select from slither import Slither from slither.slithir.operations import Operation, NewContract @@ -28,11 +27,11 @@ OperationTest = namedtuple("OperationTest", "contract_name slithir_op") OPERATION_TEST = [OperationTest("NewContract", NewContract)] -def test_operation_reads(use_solc_version) -> None: +def test_operation_reads(solc_binary_path) -> None: """ Every slithir operation has its own contract and reads all local and state variables in readAllLocalVariables and readAllStateVariables, respectively. """ - solc_path = next(use_solc_version("0.8.15")) + solc_path = solc_binary_path("0.8.15") slither = Slither(Path(TEST_DATA_DIR, "operation_reads.sol").as_posix(), solc=solc_path) for op_test in OPERATION_TEST: diff --git a/tests/unit/slithir/test_ssa_generation.py b/tests/unit/slithir/test_ssa_generation.py index 34ad5e4fe..865e3263d 100644 --- a/tests/unit/slithir/test_ssa_generation.py +++ b/tests/unit/slithir/test_ssa_generation.py @@ -230,9 +230,8 @@ # assert have_phi_for_var(df, ssa_lvalue) - # @contextmanager -# def slither_from_source(source_code: str, use_solc_version, solc_version: str = "latest"): +# def slither_from_source(source_code: str, solc_binary_path, solc_version: str = "latest"): # """Yields a Slither instance using source_code string and solc_version # Creates a temporary file and changes the solc-version temporary to solc_version. @@ -243,7 +242,7 @@ # with NamedTemporaryFile(dir=SCRIPT_DIR, mode="w", suffix=".sol", delete=False) as f: # fname = f.name # f.write(source_code) -# solc_path = use_solc_version(solc_version) +# solc_path = solc_binary_path(solc_version) # yield Slither(fname, solc=solc_path) # finally: # pathlib.Path(fname).unlink() diff --git a/tests/unit/slithir/test_ternary_expressions.py b/tests/unit/slithir/test_ternary_expressions.py index 3fb5159f7..68a6089cc 100644 --- a/tests/unit/slithir/test_ternary_expressions.py +++ b/tests/unit/slithir/test_ternary_expressions.py @@ -8,9 +8,9 @@ from slither.core.expressions import AssignmentOperation, TupleExpression TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" # pylint: disable=too-many-nested-blocks -def test_ternary_conversions(use_solc_version) -> None: +def test_ternary_conversions(solc_binary_path) -> None: """This tests that true and false sons define the same number of variables that the father node declares""" - solc_path = next(use_solc_version("0.8.0")) + solc_path = solc_binary_path("0.8.0") slither = Slither(Path(TEST_DATA_DIR, "ternary_expressions.sol").as_posix(), solc=solc_path) for contract in slither.contracts: for function in contract.functions: diff --git a/tests/unit/utils/test_code_generation.py b/tests/unit/utils/test_code_generation.py index d4c40f42f..35f6cea0e 100644 --- a/tests/unit/utils/test_code_generation.py +++ b/tests/unit/utils/test_code_generation.py @@ -1,5 +1,4 @@ from pathlib import Path -from solc_select import solc_select from slither import Slither from slither.utils.code_generation import ( @@ -9,8 +8,8 @@ from slither.utils.code_generation import ( TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" / "code_generation" -def test_interface_generation(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.4")) +def test_interface_generation(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.4") sl = Slither(Path(TEST_DATA_DIR, "CodeGeneration.sol").as_posix(), solc=solc_path) diff --git a/tests/unit/utils/test_functions_ids.py b/tests/unit/utils/test_functions_ids.py index e6ca9f539..23888774b 100644 --- a/tests/unit/utils/test_functions_ids.py +++ b/tests/unit/utils/test_functions_ids.py @@ -1,5 +1,4 @@ from pathlib import Path -from solc_select import solc_select from slither import Slither # % solc functions_ids.sol --hashes @@ -41,8 +40,8 @@ signatures = { TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" -def test_functions_ids(use_solc_version) -> None: - solc_path = next(use_solc_version("0.7.0")) +def test_functions_ids(solc_binary_path) -> None: + solc_path = solc_binary_path("0.7.0") file = Path(TEST_DATA_DIR, "functions_ids.sol").as_posix() sl = Slither(file, solc=solc_path) contracts_c = sl.get_contract_from_name("C") diff --git a/tests/unit/utils/test_type_helpers.py b/tests/unit/utils/test_type_helpers.py index 6a71a0a19..420329ab2 100644 --- a/tests/unit/utils/test_type_helpers.py +++ b/tests/unit/utils/test_type_helpers.py @@ -1,12 +1,11 @@ from pathlib import Path -from solc_select import solc_select from slither import Slither TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" -def test_function_id_rec_structure(use_solc_version) -> None: - solc_path = next(use_solc_version("0.8.0")) +def test_function_id_rec_structure(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.0") slither = Slither(Path(TEST_DATA_DIR, "type_helpers.sol").as_posix(), solc=solc_path) for compilation_unit in slither.compilation_units: for function in compilation_unit.functions: From d8d95b5801da1c9880f688f7e35456eca7a15232 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Wed, 29 Mar 2023 10:15:15 -0500 Subject: [PATCH 022/220] add fixture slither_from_source --- tests/conftest.py | 29 +- tests/unit/core/test_code_comments.py | 1 - tests/unit/core/test_constant_folding.py | 4 +- tests/unit/core/test_source_mapping.py | 1 - tests/unit/slithir/test_operation_reads.py | 4 - tests/unit/slithir/test_ssa_generation.py | 2118 ++++++++--------- .../unit/slithir/test_ternary_expressions.py | 5 - tests/unit/utils/test_functions_ids.py | 4 - 8 files changed, 1079 insertions(+), 1087 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 63f40b672..c6feead55 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,9 +1,14 @@ +# pylint: disable=redefined-outer-name +from pathlib import Path +from contextlib import contextmanager +from tempfile import NamedTemporaryFile import pytest from filelock import FileLock from solc_select import solc_select +from slither import Slither -@pytest.fixture(scope="session") +@pytest.fixture() def solc_binary_path(): def inner(version): lock = FileLock(f"{version}.lock", timeout=60) @@ -14,3 +19,25 @@ def solc_binary_path(): return solc_select.artifact_path(version) return inner + + +@pytest.fixture() +def slither_from_source(solc_binary_path): + @contextmanager + def inner(source_code: str, solc_version: str = "0.8.19"): + """Yields a Slither instance using source_code string and solc_version + + Creates a temporary file and changes the solc-version temporary to solc_version. + """ + + fname = "" + try: + with NamedTemporaryFile(mode="w", suffix=".sol", delete=False) as f: + fname = f.name + f.write(source_code) + solc_path = solc_binary_path(solc_version) + yield Slither(fname, solc=solc_path) + finally: + Path(fname).unlink() + + return inner diff --git a/tests/unit/core/test_code_comments.py b/tests/unit/core/test_code_comments.py index 2dd07caf0..a943591dc 100644 --- a/tests/unit/core/test_code_comments.py +++ b/tests/unit/core/test_code_comments.py @@ -1,5 +1,4 @@ from pathlib import Path -from solc_select import solc_select from slither import Slither diff --git a/tests/unit/core/test_constant_folding.py b/tests/unit/core/test_constant_folding.py index a572987a4..489b4e0ec 100644 --- a/tests/unit/core/test_constant_folding.py +++ b/tests/unit/core/test_constant_folding.py @@ -55,9 +55,9 @@ def test_constant_folding_rational(solc_binary_path): def test_constant_folding_binary_expressions(solc_binary_path): - solc_path = solc_binary_path("0.8.0") sl = Slither( - Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_binop.sol").as_posix(), solc=solc_path + Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_binop.sol").as_posix(), + solc=solc_binary_path("0.8.0"), ) contract = sl.get_contract_from_name("BinOp")[0] diff --git a/tests/unit/core/test_source_mapping.py b/tests/unit/core/test_source_mapping.py index 1eec9d32a..fe5335977 100644 --- a/tests/unit/core/test_source_mapping.py +++ b/tests/unit/core/test_source_mapping.py @@ -1,5 +1,4 @@ from pathlib import Path -from solc_select import solc_select from slither import Slither from slither.core.declarations import Function diff --git a/tests/unit/slithir/test_operation_reads.py b/tests/unit/slithir/test_operation_reads.py index fc3018cc8..b82ef9d48 100644 --- a/tests/unit/slithir/test_operation_reads.py +++ b/tests/unit/slithir/test_operation_reads.py @@ -47,7 +47,3 @@ def test_operation_reads(solc_binary_path) -> None: local_function = target.get_function_from_signature("readAllLocalVariables()") num_local_vars = len(local_function.local_variables) check_num_local_vars_read(local_function, op_test.slithir_op, num_local_vars) - - -if __name__ == "__main__": - test_operation_reads() diff --git a/tests/unit/slithir/test_ssa_generation.py b/tests/unit/slithir/test_ssa_generation.py index 865e3263d..4e26aa54d 100644 --- a/tests/unit/slithir/test_ssa_generation.py +++ b/tests/unit/slithir/test_ssa_generation.py @@ -1,1070 +1,1050 @@ # # pylint: disable=too-many-lines -# import pathlib -# from argparse import ArgumentTypeError -# from collections import defaultdict -# from contextlib import contextmanager -# from inspect import getsourcefile -# from tempfile import NamedTemporaryFile -# from typing import Union, List, Optional, Dict, Callable - -# import pytest -# from solc_select import solc_select -# from solc_select.solc_select import valid_version as solc_valid_version - -# from slither import Slither -# from slither.core.cfg.node import Node, NodeType -# from slither.core.declarations import Function, Contract -# from slither.core.variables.local_variable import LocalVariable -# from slither.core.variables.state_variable import StateVariable -# from slither.slithir.operations import ( -# OperationWithLValue, -# Phi, -# Assignment, -# HighLevelCall, -# Return, -# Operation, -# Binary, -# BinaryType, -# InternalCall, -# Index, -# InitArray, -# ) -# from slither.slithir.utils.ssa import is_used_later -# from slither.slithir.variables import ( -# Constant, -# ReferenceVariable, -# LocalIRVariable, -# StateIRVariable, -# TemporaryVariableSSA, -# ) - -# # Directory of currently executing script. Will be used as basis for temporary file names. -# SCRIPT_DIR = pathlib.Path(getsourcefile(lambda: 0)).parent # type:ignore - - -# def valid_version(ver: str) -> bool: -# """Wrapper function to check if the solc-version is valid - -# The solc_select function raises and exception but for checks below, -# only a bool is needed. -# """ -# try: -# solc_valid_version(ver) -# return True -# except ArgumentTypeError: -# return False - - -# def have_ssa_if_ir(function: Function) -> None: -# """Verifies that all nodes in a function that have IR also have SSA IR""" -# for n in function.nodes: -# if n.irs: -# assert n.irs_ssa - - -# # pylint: disable=too-many-branches, too-many-locals -# def ssa_basic_properties(function: Function) -> None: -# """Verifies that basic properties of ssa holds - -# 1. Every name is defined only once -# 2. A l-value is never index zero - there is always a zero-value available for each var -# 3. Every r-value is at least defined at some point -# 4. The number of ssa defs is >= the number of assignments to var -# 5. Function parameters SSA are stored in function.parameters_ssa -# - if function parameter is_storage it refers to a fake variable -# 6. Function returns SSA are stored in function.returns_ssa -# - if function return is_storage it refers to a fake variable -# """ -# ssa_lvalues = set() -# ssa_rvalues = set() -# lvalue_assignments: Dict[str, int] = {} - -# for n in function.nodes: -# for ir in n.irs: -# if isinstance(ir, OperationWithLValue) and ir.lvalue: -# name = ir.lvalue.name -# if name is None: -# continue -# if name in lvalue_assignments: -# lvalue_assignments[name] += 1 -# else: -# lvalue_assignments[name] = 1 - -# for ssa in n.irs_ssa: -# if isinstance(ssa, OperationWithLValue): -# # 1 -# assert ssa.lvalue not in ssa_lvalues -# ssa_lvalues.add(ssa.lvalue) - -# # 2 (if Local/State Var) -# ssa_lvalue = ssa.lvalue -# if isinstance(ssa_lvalue, (StateIRVariable, LocalIRVariable)): -# assert ssa_lvalue.index > 0 - -# for rvalue in filter( -# lambda x: not isinstance(x, (StateIRVariable, Constant)), ssa.read -# ): -# ssa_rvalues.add(rvalue) - -# # 3 -# # Each var can have one non-defined value, the value initially held. Typically, -# # var_0, i_0, state_0 or similar. -# undef_vars = set() -# for rvalue in ssa_rvalues: -# if rvalue not in ssa_lvalues: -# assert rvalue.non_ssa_version not in undef_vars -# undef_vars.add(rvalue.non_ssa_version) - -# # 4 -# ssa_defs: Dict[str, int] = defaultdict(int) -# for v in ssa_lvalues: -# if v and v.name: -# ssa_defs[v.name] += 1 - -# for (k, count) in lvalue_assignments.items(): -# assert ssa_defs[k] >= count - -# # Helper 5/6 -# def check_property_5_and_6( -# variables: List[LocalVariable], ssavars: List[LocalIRVariable] -# ) -> None: -# for var in filter(lambda x: x.name, variables): -# ssa_vars = [x for x in ssavars if x.non_ssa_version == var] -# assert len(ssa_vars) == 1 -# ssa_var = ssa_vars[0] -# assert var.is_storage == ssa_var.is_storage -# if ssa_var.is_storage: -# assert len(ssa_var.refers_to) == 1 -# assert ssa_var.refers_to[0].location == "reference_to_storage" - -# # 5 -# check_property_5_and_6(function.parameters, function.parameters_ssa) - -# # 6 -# check_property_5_and_6(function.returns, function.returns_ssa) - - -# def ssa_phi_node_properties(f: Function) -> None: -# """Every phi-function should have as many args as predecessors - -# This does not apply if the phi-node refers to state variables, -# they make use os special phi-nodes for tracking potential values -# a state variable can have -# """ -# for node in f.nodes: -# for ssa in node.irs_ssa: -# if isinstance(ssa, Phi): -# n = len(ssa.read) -# if not isinstance(ssa.lvalue, StateIRVariable): -# assert len(node.fathers) == n - - -# # TODO (hbrodin): This should probably go into another file, not specific to SSA -# def dominance_properties(f: Function) -> None: -# """Verifies properties related to dominators holds - -# 1. Every node have an immediate dominator except entry_node which have none -# 2. From every node immediate dominator there is a path via its successors to the node -# """ - -# def find_path(from_node: Node, to: Node) -> bool: -# visited = set() -# worklist = list(from_node.sons) -# while worklist: -# first, *worklist = worklist -# if first == to: -# return True -# visited.add(first) -# for successor in first.sons: -# if successor not in visited: -# worklist.append(successor) -# return False - -# for node in f.nodes: -# if node is f.entry_point: -# assert node.immediate_dominator is None -# else: -# assert node.immediate_dominator is not None -# assert find_path(node.immediate_dominator, node) - - -# def phi_values_inserted(f: Function) -> None: -# """Verifies that phi-values are inserted at the right places - -# For every node that has a dominance frontier, any def (including -# phi) should be a phi function in its dominance frontier -# """ - -# def have_phi_for_var( -# node: Node, var: Union[StateIRVariable, LocalIRVariable, TemporaryVariableSSA] -# ) -> bool: -# """Checks if a node has a phi-instruction for var - -# The ssa version would ideally be checked, but then -# more data flow analysis would be needed, for cases -# where a new def for var is introduced before reaching -# DF -# """ -# non_ssa = var.non_ssa_version -# for ssa in node.irs_ssa: -# if isinstance(ssa, Phi): -# if non_ssa in map( -# lambda ssa_var: ssa_var.non_ssa_version, -# [ -# r -# for r in ssa.read -# if isinstance(r, (StateIRVariable, LocalIRVariable, TemporaryVariableSSA)) -# ], -# ): -# return True -# return False - -# for node in filter(lambda n: n.dominance_frontier, f.nodes): -# for df in node.dominance_frontier: -# for ssa in node.irs_ssa: -# if isinstance(ssa, OperationWithLValue): -# ssa_lvalue = ssa.lvalue -# if isinstance( -# ssa_lvalue, (StateIRVariable, LocalIRVariable, TemporaryVariableSSA) -# ) and is_used_later(node, ssa_lvalue): -# assert have_phi_for_var(df, ssa_lvalue) - - -# @contextmanager -# def slither_from_source(source_code: str, solc_binary_path, solc_version: str = "latest"): -# """Yields a Slither instance using source_code string and solc_version - -# Creates a temporary file and changes the solc-version temporary to solc_version. -# """ - -# fname = "" -# try: -# with NamedTemporaryFile(dir=SCRIPT_DIR, mode="w", suffix=".sol", delete=False) as f: -# fname = f.name -# f.write(source_code) -# solc_path = solc_binary_path(solc_version) -# yield Slither(fname, solc=solc_path) -# finally: -# pathlib.Path(fname).unlink() - - -# def verify_properties_hold(source_code_or_slither: Union[str, Slither]) -> None: -# """Ensures that basic properties of SSA hold true""" - -# def verify_func(func: Function) -> None: -# have_ssa_if_ir(func) -# phi_values_inserted(func) -# ssa_basic_properties(func) -# ssa_phi_node_properties(func) -# dominance_properties(func) - -# def verify(slither: Slither) -> None: -# for cu in slither.compilation_units: -# for func in cu.functions_and_modifiers: -# _dump_function(func) -# verify_func(func) -# for contract in cu.contracts: -# for f in contract.functions: -# if f.is_constructor or f.is_constructor_variables: -# _dump_function(f) -# verify_func(f) - -# if isinstance(source_code_or_slither, Slither): -# verify(source_code_or_slither) -# else: -# slither: Slither -# with slither_from_source(source_code_or_slither) as slither: -# verify(slither) - - -# def _dump_function(f: Function) -> None: -# """Helper function to print nodes/ssa ir for a function or modifier""" -# print(f"---- {f.name} ----") -# for n in f.nodes: -# print(n) -# for ir in n.irs_ssa: -# print(f"\t{ir}") -# print("") - - -# def _dump_functions(c: Contract) -> None: -# """Helper function to print functions and modifiers of a contract""" -# for f in c.functions_and_modifiers: -# _dump_function(f) - - -# def get_filtered_ssa(f: Union[Function, Node], flt: Callable) -> List[Operation]: -# """Returns a list of all ssanodes filtered by filter for all nodes in function f""" -# if isinstance(f, Function): -# return [ssanode for node in f.nodes for ssanode in node.irs_ssa if flt(ssanode)] - -# assert isinstance(f, Node) -# return [ssanode for ssanode in f.irs_ssa if flt(ssanode)] - - -# def get_ssa_of_type(f: Union[Function, Node], ssatype) -> List[Operation]: -# """Returns a list of all ssanodes of a specific type for all nodes in function f""" -# return get_filtered_ssa(f, lambda ssanode: isinstance(ssanode, ssatype)) - - -# def test_multi_write() -> None: -# contract = """ -# pragma solidity ^0.8.11; -# contract Test { -# function multi_write(uint val) external pure returns(uint) { -# val = 1; -# val = 2; -# val = 3; -# } -# }""" -# verify_properties_hold(contract) - - -# def test_single_branch_phi() -> None: -# contract = """ -# pragma solidity ^0.8.11; -# contract Test { -# function single_branch_phi(uint val) external pure returns(uint) { -# if (val == 3) { -# val = 9; -# } -# return val; -# } -# } -# """ -# verify_properties_hold(contract) - - -# def test_basic_phi() -> None: -# contract = """ -# pragma solidity ^0.8.11; -# contract Test { -# function basic_phi(uint val) external pure returns(uint) { -# if (val == 3) { -# val = 9; -# } else { -# val = 1; -# } -# return val; -# } -# } -# """ -# verify_properties_hold(contract) - - -# def test_basic_loop_phi() -> None: -# contract = """ -# pragma solidity ^0.8.11; -# contract Test { -# function basic_loop_phi(uint val) external pure returns(uint) { -# for (uint i=0;i<128;i++) { -# val = val + 1; -# } -# return val; -# } -# } -# """ -# verify_properties_hold(contract) - - -# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -# def test_phi_propagation_loop(): -# contract = """ -# pragma solidity ^0.8.11; -# contract Test { -# function looping(uint v) external pure returns(uint) { -# uint val = 0; -# for (uint i=0;i i) { -# val = i; -# } else { -# val = 3; -# } -# } -# return val; -# } -# } -# """ -# verify_properties_hold(contract) - - -# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -# def test_free_function_properties(): -# contract = """ -# pragma solidity ^0.8.11; - -# function free_looping(uint v) returns(uint) { -# uint val = 0; -# for (uint i=0;i i) { -# val = i; -# } else { -# val = 3; -# } -# } -# return val; -# } - -# contract Test {} -# """ -# verify_properties_hold(contract) - - -# def test_ssa_inter_transactional() -> None: -# source = """ -# pragma solidity ^0.8.11; -# contract A { -# uint my_var_A; -# uint my_var_B; - -# function direct_set(uint i) public { -# my_var_A = i; -# } - -# function direct_set_plus_one(uint i) public { -# my_var_A = i + 1; -# } - -# function indirect_set() public { -# my_var_B = my_var_A; -# } -# } -# """ -# with slither_from_source(source) as slither: -# c = slither.contracts[0] -# variables = c.variables_as_dict -# funcs = c.available_functions_as_dict() -# direct_set = funcs["direct_set(uint256)"] -# # Skip entry point and go straight to assignment ir -# assign1 = direct_set.nodes[1].irs_ssa[0] -# assert isinstance(assign1, Assignment) - -# assign2 = direct_set.nodes[1].irs_ssa[0] -# assert isinstance(assign2, Assignment) - -# indirect_set = funcs["indirect_set()"] -# phi = indirect_set.entry_point.irs_ssa[0] -# assert isinstance(phi, Phi) -# # phi rvalues come from 1, initial value of my_var_a and 2, assignment in direct_set -# assert len(phi.rvalues) == 3 -# assert all(x.non_ssa_version == variables["my_var_A"] for x in phi.rvalues) -# assert assign1.lvalue in phi.rvalues -# assert assign2.lvalue in phi.rvalues - - -# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -# def test_ssa_phi_callbacks(): -# source = """ -# pragma solidity ^0.8.11; -# contract A { -# uint my_var_A; -# uint my_var_B; - -# function direct_set(uint i) public { -# my_var_A = i; -# } - -# function use_a() public { -# // Expect a phi-node here -# my_var_B = my_var_A; -# B b = new B(); -# my_var_A = 3; -# b.do_stuff(); -# // Expect a phi-node here -# my_var_B = my_var_A; -# } -# } - -# contract B { -# function do_stuff() public returns (uint) { -# // This could be calling back into A -# } -# } -# """ -# with slither_from_source(source) as slither: -# c = slither.get_contract_from_name("A")[0] -# _dump_functions(c) -# f = [x for x in c.functions if x.name == "use_a"][0] -# var_a = [x for x in c.variables if x.name == "my_var_A"][0] - -# entry_phi = [ -# x -# for x in f.entry_point.irs_ssa -# if isinstance(x, Phi) and x.lvalue.non_ssa_version == var_a -# ][0] -# # The four potential sources are: -# # 1. initial value -# # 2. my_var_A = i; -# # 3. my_var_A = 3; -# # 4. phi-value after call to b.do_stuff(), which could be reentrant. -# assert len(entry_phi.rvalues) == 4 - -# # Locate the first high-level call (should be b.do_stuff()) -# call_node = [x for y in f.nodes for x in y.irs_ssa if isinstance(x, HighLevelCall)][0] -# n = call_node.node -# # Get phi-node after call -# after_call_phi = n.irs_ssa[n.irs_ssa.index(call_node) + 1] -# # The two sources for this phi node is -# # 1. my_var_A = i; -# # 2. my_var_A = 3; -# assert isinstance(after_call_phi, Phi) -# assert len(after_call_phi.rvalues) == 2 - - -# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -# def test_storage_refers_to(): -# """Test the storage aspects of the SSA IR - -# When declaring a var as being storage, start tracking what storage it refers_to. -# When a phi-node is created, ensure refers_to is propagated to the phi-node. -# Assignments also propagate refers_to. -# Whenever a ReferenceVariable is the destination of an assignment (e.g. s.v = 10) -# below, create additional versions of the variables it refers to record that a a -# write was made. In the current implementation, this is referenced by phis. -# """ -# source = """ -# contract A{ - -# struct St{ -# int v; -# } - -# St state0; -# St state1; - -# function f() public{ -# St storage s = state0; -# if(true){ -# s = state1; -# } -# s.v = 10; -# } -# } -# """ -# with slither_from_source(source) as slither: -# c = slither.contracts[0] -# f = c.functions[0] - -# phinodes = get_ssa_of_type(f, Phi) -# # Expect 2 in entrypoint (state0/state1 initial values), 1 at 'ENDIF' and two related to the -# # ReferenceVariable write s.v = 10. -# assert len(phinodes) == 5 - -# # Assign s to state0, s to state1, s.v to 10 -# assigns = get_ssa_of_type(f, Assignment) -# assert len(assigns) == 3 - -# # The IR variables have is_storage -# assert all(x.lvalue.is_storage for x in assigns if isinstance(x, LocalIRVariable)) - -# # s.v ReferenceVariable points to one of the phi vars... -# ref0 = [x.lvalue for x in assigns if isinstance(x.lvalue, ReferenceVariable)][0] -# sphis = [x for x in phinodes if x.lvalue == ref0.points_to] -# assert len(sphis) == 1 -# sphi = sphis[0] - -# # ...and that phi refers to the two entry phi-values -# entryphi = [x for x in phinodes if x.lvalue in sphi.lvalue.refers_to] -# assert len(entryphi) == 2 - -# # The remaining two phis are the ones recording that write through ReferenceVariable occured -# for ephi in entryphi: -# phinodes.remove(ephi) -# phinodes.remove(sphi) -# assert len(phinodes) == 2 - -# # And they are recorded in one of the entry phis -# assert phinodes[0].lvalue in entryphi[0].rvalues or entryphi[1].rvalues -# assert phinodes[1].lvalue in entryphi[0].rvalues or entryphi[1].rvalues - - -# @pytest.mark.skipif( -# not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" -# ) -# def test_initial_version_exists_for_locals(): -# """ -# In solidity you can write statements such as -# uint a = a + 1, this test ensures that can be handled for local variables. -# """ -# src = """ -# contract C { -# function func() internal { -# uint a = a + 1; -# } -# } -# """ -# with slither_from_source(src, "0.4.0") as slither: -# verify_properties_hold(slither) -# c = slither.contracts[0] -# f = c.functions[0] - -# addition = get_ssa_of_type(f, Binary)[0] -# assert addition.type == BinaryType.ADDITION -# assert isinstance(addition.variable_right, Constant) -# a_0 = addition.variable_left -# assert a_0.index == 0 -# assert a_0.name == "a" - -# assignment = get_ssa_of_type(f, Assignment)[0] -# a_1 = assignment.lvalue -# assert a_1.index == 1 -# assert a_1.name == "a" -# assert assignment.rvalue == addition.lvalue - -# assert a_0.non_ssa_version == a_1.non_ssa_version - - -# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -# @pytest.mark.skipif( -# not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" -# ) -# def test_initial_version_exists_for_state_variables(): -# """ -# In solidity you can write statements such as -# uint a = a + 1, this test ensures that can be handled for state variables. -# """ -# src = """ -# contract C { -# uint a = a + 1; -# } -# """ -# with slither_from_source(src, "0.4.0") as slither: -# verify_properties_hold(slither) -# c = slither.contracts[0] -# f = c.functions[0] # There will be one artificial ctor function for the state vars - -# addition = get_ssa_of_type(f, Binary)[0] -# assert addition.type == BinaryType.ADDITION -# assert isinstance(addition.variable_right, Constant) -# a_0 = addition.variable_left -# assert isinstance(a_0, StateIRVariable) -# assert a_0.name == "a" - -# assignment = get_ssa_of_type(f, Assignment)[0] -# a_1 = assignment.lvalue -# assert isinstance(a_1, StateIRVariable) -# assert a_1.index == a_0.index + 1 -# assert a_1.name == "a" -# assert assignment.rvalue == addition.lvalue - -# assert a_0.non_ssa_version == a_1.non_ssa_version -# assert isinstance(a_0.non_ssa_version, StateVariable) - -# # No conditional/other function interaction so no phis -# assert len(get_ssa_of_type(f, Phi)) == 0 - - -# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -# def test_initial_version_exists_for_state_variables_function_assign(): -# """ -# In solidity you can write statements such as -# uint a = a + 1, this test ensures that can be handled for local variables. -# """ -# # TODO (hbrodin): Could be a detector that a is not used in f -# src = """ -# contract C { -# uint a = f(); - -# function f() internal returns(uint) { -# return a; -# } -# } -# """ -# with slither_from_source(src) as slither: -# verify_properties_hold(slither) -# c = slither.contracts[0] -# f, ctor = c.functions -# if f.is_constructor_variables: -# f, ctor = ctor, f - -# # ctor should have a single call to f that assigns to a -# # temporary variable, that is then assigned to a - -# call = get_ssa_of_type(ctor, InternalCall)[0] -# assert call.node.function == f -# assign = get_ssa_of_type(ctor, Assignment)[0] -# assert assign.rvalue == call.lvalue -# assert isinstance(assign.lvalue, StateIRVariable) -# assert assign.lvalue.name == "a" - -# # f should have a phi node on entry of a0, a1 and should return -# # a2 -# phi = get_ssa_of_type(f, Phi)[0] -# assert len(phi.rvalues) == 2 -# assert assign.lvalue in phi.rvalues - - -# @pytest.mark.skipif( -# not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" -# ) -# def test_return_local_before_assign(): -# src = """ -# // this require solidity < 0.5 -# // a variable can be returned before declared. Ensure it can be -# // handled by Slither. -# contract A { -# function local(bool my_bool) internal returns(uint){ -# if(my_bool){ -# return a_local; -# } - -# uint a_local = 10; -# } -# } -# """ -# with slither_from_source(src, "0.4.0") as slither: -# f = slither.contracts[0].functions[0] - -# ret = get_ssa_of_type(f, Return)[0] -# assert len(ret.values) == 1 -# assert ret.values[0].index == 0 - -# assign = get_ssa_of_type(f, Assignment)[0] -# assert assign.lvalue.index == 1 -# assert assign.lvalue.non_ssa_version == ret.values[0].non_ssa_version - - -# @pytest.mark.skipif( -# not valid_version("0.5.0"), reason="Solidity version 0.5.0 not available on this platform" -# ) -# def test_shadow_local(): -# src = """ -# contract A { -# // this require solidity 0.5 -# function shadowing_local() internal{ -# uint local = 0; -# { -# uint local = 1; -# { -# uint local = 2; -# } -# } -# } -# } -# """ -# with slither_from_source(src, "0.5.0") as slither: -# _dump_functions(slither.contracts[0]) -# f = slither.contracts[0].functions[0] - -# # Ensure all assignments are to a variable of index 1 -# # not using the same IR var. -# assert all(map(lambda x: x.lvalue.index == 1, get_ssa_of_type(f, Assignment))) - - -# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -# def test_multiple_named_args_returns(): -# """Verifies that named arguments and return values have correct versions - -# Each arg/ret have an initial version, version 0, and is written once and should -# then have version 1. -# """ -# src = """ -# contract A { -# function multi(uint arg1, uint arg2) internal returns (uint ret1, uint ret2) { -# arg1 = arg1 + 1; -# arg2 = arg2 + 2; -# ret1 = arg1 + 3; -# ret2 = arg2 + 4; -# } -# }""" -# with slither_from_source(src) as slither: -# verify_properties_hold(slither) -# f = slither.contracts[0].functions[0] - -# # Ensure all LocalIRVariables (not TemporaryVariables) have index 1 -# assert all( -# map( -# lambda x: x.lvalue.index == 1 or not isinstance(x.lvalue, LocalIRVariable), -# get_ssa_of_type(f, OperationWithLValue), -# ) -# ) - - -# @pytest.mark.xfail(reason="Tests for wanted state of SSA IR, not current.", strict=True) -# def test_memory_array(): -# src = """ -# contract MemArray { -# struct A { -# uint val1; -# uint val2; -# } - -# function test_array() internal { -# A[] memory a= new A[](4); -# // Create REF_0 -> a_1[2] -# accept_array_entry(a[2]); - -# // Create REF_1 -> a_1[3] -# accept_array_entry(a[3]); - -# A memory alocal; -# accept_array_entry(alocal); - -# } - -# // val_1 = ϕ(val_0, REF_0, REF_1, alocal_1) -# // val_0 is an unknown external value -# function accept_array_entry(A memory val) public returns (uint) { -# uint zero = 0; -# b(zero); -# // Create REF_2 -> val_1.val1 -# return b(val.val1); -# } - -# function b(uint arg) public returns (uint){ -# // arg_1 = ϕ(arg_0, zero_1, REF_2) -# return arg + 1; -# } -# }""" -# with slither_from_source(src) as slither: -# c = slither.contracts[0] - -# ftest_array, faccept, fb = c.functions - -# # Locate REF_0/REF_1/alocal (they are all args to the call) -# accept_args = [x.arguments[0] for x in get_ssa_of_type(ftest_array, InternalCall)] - -# # Check entrypoint of accept_array_entry, it should contain a phi-node -# # of expected rvalues -# [phi_entry_accept] = get_ssa_of_type(faccept.entry_point, Phi) -# for arg in accept_args: -# assert arg in phi_entry_accept.rvalues -# # NOTE(hbrodin): There should be an additional val_0 in the phi-node. -# # That additional val_0 indicates an external caller of this function. -# assert len(phi_entry_accept.rvalues) == len(accept_args) + 1 - -# # Args used to invoke b -# b_args = [x.arguments[0] for x in get_ssa_of_type(faccept, InternalCall)] - -# # Check entrypoint of B, it should contain a phi-node of expected -# # rvalues -# [phi_entry_b] = get_ssa_of_type(fb.entry_point, Phi) -# for arg in b_args: -# assert arg in phi_entry_b.rvalues - -# # NOTE(hbrodin): There should be an additional arg_0 (see comment about phi_entry_accept). -# assert len(phi_entry_b.rvalues) == len(b_args) + 1 - - -# @pytest.mark.xfail(reason="Tests for wanted state of SSA IR, not current.", strict=True) -# def test_storage_array(): -# src = """ -# contract StorageArray { -# struct A { -# uint val1; -# uint val2; -# } - -# // NOTE(hbrodin): a is never written, should only become a_0. Same for astorage (astorage_0). Phi-nodes at entry -# // should only add new versions of a state variable if it is actually written. -# A[] a; -# A astorage; - -# function test_array() internal { -# accept_array_entry(a[2]); -# accept_array_entry(a[3]); -# accept_array_entry(astorage); -# } - -# function accept_array_entry(A storage val) internal returns (uint) { -# // val is either a[2], a[3] or astorage_0. Ideally this could be identified. -# uint five = 5; - -# // NOTE(hbrodin): If the following line is enabled, there would ideally be a phi-node representing writes -# // to either a or astorage. -# //val.val2 = 4; -# b(five); -# return b(val.val1); -# } - -# function b(uint value) public returns (uint){ -# // Expect a phi-node at the entrypoint -# // value_1 = ϕ(value_0, five_0, REF_x), where REF_x is the reference to val.val1 in accept_array_entry. -# return value + 1; -# } -# }""" -# with slither_from_source(src) as slither: -# c = slither.contracts[0] -# _dump_functions(c) -# ftest, faccept, fb = c.functions - -# # None of a/astorage is written so expect that there are no phi-nodes at entrypoint. -# assert len(get_ssa_of_type(ftest.entry_point, Phi)) == 0 - -# # Expect all references to start from index 0 (no writes) -# assert all(x.variable_left.index == 0 for x in get_ssa_of_type(ftest, Index)) - -# [phi_entry_accept] = get_ssa_of_type(faccept.entry_point, Phi) -# assert len(phi_entry_accept.rvalues) == 3 # See comment in b above - -# [phi_entry_b] = get_ssa_of_type(fb.entry_point, Phi) -# assert len(phi_entry_b.rvalues) == 3 # See comment in b above - - -# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -# def test_issue_468(): -# """ -# Ensure issue 468 is corrected as per -# https://github.com/crytic/slither/issues/468#issuecomment-620974151 -# The one difference is that we allow the phi-function at entry of f to -# hold exit state which contains init state and state from branch, which -# is a bit redundant. This could be further simplified. -# """ -# source = """ -# contract State { -# int state = 0; -# function f(int a) public returns (int) { -# // phi-node here for state -# if (a < 1) { -# state += 1; -# } -# // phi-node here for state -# return state; -# } -# } -# """ -# with slither_from_source(source) as slither: -# c = slither.get_contract_from_name("State")[0] -# f = [x for x in c.functions if x.name == "f"][0] - -# # Check that there is an entry point phi values for each later value -# # plus one additional which is the initial value -# entry_ssa = f.entry_point.irs_ssa -# assert len(entry_ssa) == 1 -# phi_entry = entry_ssa[0] -# assert isinstance(phi_entry, Phi) - -# # Find the second phi function -# endif_node = [x for x in f.nodes if x.type == NodeType.ENDIF][0] -# assert len(endif_node.irs_ssa) == 1 -# phi_endif = endif_node.irs_ssa[0] -# assert isinstance(phi_endif, Phi) - -# # Ensure second phi-function contains init-phi and one additional -# assert len(phi_endif.rvalues) == 2 -# assert phi_entry.lvalue in phi_endif.rvalues - -# # Find return-statement and ensure it returns the phi_endif -# return_node = [x for x in f.nodes if x.type == NodeType.RETURN][0] -# assert len(return_node.irs_ssa) == 1 -# ret = return_node.irs_ssa[0] -# assert len(ret.values) == 1 -# assert phi_endif.lvalue in ret.values - -# # Ensure that the phi_endif (which is the end-state for function as well) is in the entry_phi -# assert phi_endif.lvalue in phi_entry.rvalues - - -# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -# def test_issue_434(): -# source = """ -# contract Contract { -# int public a; -# function f() public { -# g(); -# a += 1; -# } - -# function e() public { -# a -= 1; -# } - -# function g() public { -# e(); -# } -# } -# """ -# with slither_from_source(source) as slither: -# c = slither.get_contract_from_name("Contract")[0] - -# e = [x for x in c.functions if x.name == "e"][0] -# f = [x for x in c.functions if x.name == "f"][0] -# g = [x for x in c.functions if x.name == "g"][0] - -# # Ensure there is a phi-node at the beginning of f and e -# phi_entry_e = get_ssa_of_type(e.entry_point, Phi)[0] -# phi_entry_f = get_ssa_of_type(f.entry_point, Phi)[0] -# # But not at g -# assert len(get_ssa_of_type(g, Phi)) == 0 - -# # Ensure that the final states of f and e are in the entry-states -# add_f = get_filtered_ssa( -# f, lambda x: isinstance(x, Binary) and x.type == BinaryType.ADDITION -# )[0] -# sub_e = get_filtered_ssa( -# e, lambda x: isinstance(x, Binary) and x.type == BinaryType.SUBTRACTION -# )[0] -# assert add_f.lvalue in phi_entry_f.rvalues -# assert add_f.lvalue in phi_entry_e.rvalues -# assert sub_e.lvalue in phi_entry_f.rvalues -# assert sub_e.lvalue in phi_entry_e.rvalues - -# # Ensure there is a phi-node after call to g -# call = get_ssa_of_type(f, InternalCall)[0] -# idx = call.node.irs_ssa.index(call) -# aftercall_phi = call.node.irs_ssa[idx + 1] -# assert isinstance(aftercall_phi, Phi) - -# # Ensure that phi node ^ is used in the addition afterwards -# assert aftercall_phi.lvalue in (add_f.variable_left, add_f.variable_right) - - -# @pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") -# def test_issue_473(): -# source = """ -# contract Contract { -# function f() public returns (int) { -# int a = 1; -# if (a > 0) { -# a = 2; -# } -# if (a == 3) { -# a = 6; -# } -# return a; -# } -# } -# """ -# with slither_from_source(source) as slither: -# c = slither.get_contract_from_name("Contract")[0] -# f = c.functions[0] - -# phis = get_ssa_of_type(f, Phi) -# return_value = get_ssa_of_type(f, Return)[0] - -# # There shall be two phi functions -# assert len(phis) == 2 -# first_phi = phis[0] -# second_phi = phis[1] - -# # The second phi is the one being returned, if it's the first swap them (iteration order) -# if first_phi.lvalue in return_value.values: -# first_phi, second_phi = second_phi, first_phi - -# # First phi is for [a=1 or a=2] -# assert len(first_phi.rvalues) == 2 - -# # second is for [a=6 or first phi] -# assert first_phi.lvalue in second_phi.rvalues -# assert len(second_phi.rvalues) == 2 - -# # return is for second phi -# assert len(return_value.values) == 1 -# assert second_phi.lvalue in return_value.values - - -# def test_issue_1748(): -# source = """ -# contract Contract { -# uint[] arr; -# function foo(uint i) public { -# arr = [1]; -# } -# } -# """ -# with slither_from_source(source) as slither: -# c = slither.get_contract_from_name("Contract")[0] -# f = c.functions[0] -# operations = f.slithir_operations -# assign_op = operations[0] -# assert isinstance(assign_op, InitArray) +import pathlib +from collections import defaultdict +from argparse import ArgumentTypeError +from inspect import getsourcefile +from typing import Union, List, Dict, Callable + +import pytest +from solc_select.solc_select import valid_version as solc_valid_version +from slither import Slither +from slither.core.cfg.node import Node, NodeType +from slither.core.declarations import Function, Contract +from slither.core.variables.local_variable import LocalVariable +from slither.core.variables.state_variable import StateVariable +from slither.slithir.operations import ( + OperationWithLValue, + Phi, + Assignment, + HighLevelCall, + Return, + Operation, + Binary, + BinaryType, + InternalCall, + Index, + InitArray, +) +from slither.slithir.utils.ssa import is_used_later +from slither.slithir.variables import ( + Constant, + ReferenceVariable, + LocalIRVariable, + StateIRVariable, + TemporaryVariableSSA, +) + +# Directory of currently executing script. Will be used as basis for temporary file names. +SCRIPT_DIR = pathlib.Path(getsourcefile(lambda: 0)).parent # type:ignore + + +def valid_version(ver: str) -> bool: + """Wrapper function to check if the solc-version is valid + + The solc_select function raises and exception but for checks below, + only a bool is needed. + """ + try: + solc_valid_version(ver) + return True + except ArgumentTypeError: + return False + + +def have_ssa_if_ir(function: Function) -> None: + """Verifies that all nodes in a function that have IR also have SSA IR""" + for n in function.nodes: + if n.irs: + assert n.irs_ssa + + +# pylint: disable=too-many-branches, too-many-locals +def ssa_basic_properties(function: Function) -> None: + """Verifies that basic properties of ssa holds + + 1. Every name is defined only once + 2. A l-value is never index zero - there is always a zero-value available for each var + 3. Every r-value is at least defined at some point + 4. The number of ssa defs is >= the number of assignments to var + 5. Function parameters SSA are stored in function.parameters_ssa + - if function parameter is_storage it refers to a fake variable + 6. Function returns SSA are stored in function.returns_ssa + - if function return is_storage it refers to a fake variable + """ + ssa_lvalues = set() + ssa_rvalues = set() + lvalue_assignments: Dict[str, int] = {} + + for n in function.nodes: + for ir in n.irs: + if isinstance(ir, OperationWithLValue) and ir.lvalue: + name = ir.lvalue.name + if name is None: + continue + if name in lvalue_assignments: + lvalue_assignments[name] += 1 + else: + lvalue_assignments[name] = 1 + + for ssa in n.irs_ssa: + if isinstance(ssa, OperationWithLValue): + # 1 + assert ssa.lvalue not in ssa_lvalues + ssa_lvalues.add(ssa.lvalue) + + # 2 (if Local/State Var) + ssa_lvalue = ssa.lvalue + if isinstance(ssa_lvalue, (StateIRVariable, LocalIRVariable)): + assert ssa_lvalue.index > 0 + + for rvalue in filter( + lambda x: not isinstance(x, (StateIRVariable, Constant)), ssa.read + ): + ssa_rvalues.add(rvalue) + + # 3 + # Each var can have one non-defined value, the value initially held. Typically, + # var_0, i_0, state_0 or similar. + undef_vars = set() + for rvalue in ssa_rvalues: + if rvalue not in ssa_lvalues: + assert rvalue.non_ssa_version not in undef_vars + undef_vars.add(rvalue.non_ssa_version) + + # 4 + ssa_defs: Dict[str, int] = defaultdict(int) + for v in ssa_lvalues: + if v and v.name: + ssa_defs[v.name] += 1 + + for (k, count) in lvalue_assignments.items(): + assert ssa_defs[k] >= count + + # Helper 5/6 + def check_property_5_and_6( + variables: List[LocalVariable], ssavars: List[LocalIRVariable] + ) -> None: + for var in filter(lambda x: x.name, variables): + ssa_vars = [x for x in ssavars if x.non_ssa_version == var] + assert len(ssa_vars) == 1 + ssa_var = ssa_vars[0] + assert var.is_storage == ssa_var.is_storage + if ssa_var.is_storage: + assert len(ssa_var.refers_to) == 1 + assert ssa_var.refers_to[0].location == "reference_to_storage" + + # 5 + check_property_5_and_6(function.parameters, function.parameters_ssa) + + # 6 + check_property_5_and_6(function.returns, function.returns_ssa) + + +def ssa_phi_node_properties(f: Function) -> None: + """Every phi-function should have as many args as predecessors + + This does not apply if the phi-node refers to state variables, + they make use os special phi-nodes for tracking potential values + a state variable can have + """ + for node in f.nodes: + for ssa in node.irs_ssa: + if isinstance(ssa, Phi): + n = len(ssa.read) + if not isinstance(ssa.lvalue, StateIRVariable): + assert len(node.fathers) == n + + +# TODO (hbrodin): This should probably go into another file, not specific to SSA +def dominance_properties(f: Function) -> None: + """Verifies properties related to dominators holds + + 1. Every node have an immediate dominator except entry_node which have none + 2. From every node immediate dominator there is a path via its successors to the node + """ + + def find_path(from_node: Node, to: Node) -> bool: + visited = set() + worklist = list(from_node.sons) + while worklist: + first, *worklist = worklist + if first == to: + return True + visited.add(first) + for successor in first.sons: + if successor not in visited: + worklist.append(successor) + return False + + for node in f.nodes: + if node is f.entry_point: + assert node.immediate_dominator is None + else: + assert node.immediate_dominator is not None + assert find_path(node.immediate_dominator, node) + + +def phi_values_inserted(f: Function) -> None: + """Verifies that phi-values are inserted at the right places + + For every node that has a dominance frontier, any def (including + phi) should be a phi function in its dominance frontier + """ + + def have_phi_for_var( + node: Node, var: Union[StateIRVariable, LocalIRVariable, TemporaryVariableSSA] + ) -> bool: + """Checks if a node has a phi-instruction for var + + The ssa version would ideally be checked, but then + more data flow analysis would be needed, for cases + where a new def for var is introduced before reaching + DF + """ + non_ssa = var.non_ssa_version + for ssa in node.irs_ssa: + if isinstance(ssa, Phi): + if non_ssa in map( + lambda ssa_var: ssa_var.non_ssa_version, + [ + r + for r in ssa.read + if isinstance(r, (StateIRVariable, LocalIRVariable, TemporaryVariableSSA)) + ], + ): + return True + return False + + for node in filter(lambda n: n.dominance_frontier, f.nodes): + for df in node.dominance_frontier: + for ssa in node.irs_ssa: + if isinstance(ssa, OperationWithLValue): + ssa_lvalue = ssa.lvalue + if isinstance( + ssa_lvalue, (StateIRVariable, LocalIRVariable, TemporaryVariableSSA) + ) and is_used_later(node, ssa_lvalue): + assert have_phi_for_var(df, ssa_lvalue) + + +def verify_properties_hold(slither: Slither) -> None: + """Ensures that basic properties of SSA hold true""" + + def verify_func(func: Function) -> None: + have_ssa_if_ir(func) + phi_values_inserted(func) + ssa_basic_properties(func) + ssa_phi_node_properties(func) + dominance_properties(func) + + def verify(slither: Slither) -> None: + for cu in slither.compilation_units: + for func in cu.functions_and_modifiers: + _dump_function(func) + verify_func(func) + for contract in cu.contracts: + for f in contract.functions: + if f.is_constructor or f.is_constructor_variables: + _dump_function(f) + verify_func(f) + + assert isinstance(slither, Slither) + verify(slither) + + +def _dump_function(f: Function) -> None: + """Helper function to print nodes/ssa ir for a function or modifier""" + print(f"---- {f.name} ----") + for n in f.nodes: + print(n) + for ir in n.irs_ssa: + print(f"\t{ir}") + print("") + + +def _dump_functions(c: Contract) -> None: + """Helper function to print functions and modifiers of a contract""" + for f in c.functions_and_modifiers: + _dump_function(f) + + +def get_filtered_ssa(f: Union[Function, Node], flt: Callable) -> List[Operation]: + """Returns a list of all ssanodes filtered by filter for all nodes in function f""" + if isinstance(f, Function): + return [ssanode for node in f.nodes for ssanode in node.irs_ssa if flt(ssanode)] + + assert isinstance(f, Node) + return [ssanode for ssanode in f.irs_ssa if flt(ssanode)] + + +def get_ssa_of_type(f: Union[Function, Node], ssatype) -> List[Operation]: + """Returns a list of all ssanodes of a specific type for all nodes in function f""" + return get_filtered_ssa(f, lambda ssanode: isinstance(ssanode, ssatype)) + + +def test_multi_write(slither_from_source) -> None: + source = """ + pragma solidity ^0.8.11; + contract Test { + function multi_write(uint val) external pure returns(uint) { + val = 1; + val = 2; + val = 3; + } + }""" + with slither_from_source(source) as slither: + verify_properties_hold(slither) + + +def test_single_branch_phi(slither_from_source) -> None: + source = """ + pragma solidity ^0.8.11; + contract Test { + function single_branch_phi(uint val) external pure returns(uint) { + if (val == 3) { + val = 9; + } + return val; + } + } + """ + with slither_from_source(source) as slither: + verify_properties_hold(slither) + + +def test_basic_phi(slither_from_source) -> None: + source = """ + pragma solidity ^0.8.11; + contract Test { + function basic_phi(uint val) external pure returns(uint) { + if (val == 3) { + val = 9; + } else { + val = 1; + } + return val; + } + } + """ + with slither_from_source(source) as slither: + verify_properties_hold(slither) + + +def test_basic_loop_phi(slither_from_source) -> None: + source = """ + pragma solidity ^0.8.11; + contract Test { + function basic_loop_phi(uint val) external pure returns(uint) { + for (uint i=0;i<128;i++) { + val = val + 1; + } + return val; + } + } + """ + with slither_from_source(source) as slither: + verify_properties_hold(slither) + + +@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +def test_phi_propagation_loop(slither_from_source): + source = """ + pragma solidity ^0.8.11; + contract Test { + function looping(uint v) external pure returns(uint) { + uint val = 0; + for (uint i=0;i i) { + val = i; + } else { + val = 3; + } + } + return val; + } + } + """ + with slither_from_source(source) as slither: + verify_properties_hold(slither) + + +@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +def test_free_function_properties(slither_from_source): + source = """ + pragma solidity ^0.8.11; + + function free_looping(uint v) returns(uint) { + uint val = 0; + for (uint i=0;i i) { + val = i; + } else { + val = 3; + } + } + return val; + } + + contract Test {} + """ + with slither_from_source(source) as slither: + verify_properties_hold(slither) + + +def test_ssa_inter_transactional(slither_from_source) -> None: + source = """ + pragma solidity ^0.8.11; + contract A { + uint my_var_A; + uint my_var_B; + + function direct_set(uint i) public { + my_var_A = i; + } + + function direct_set_plus_one(uint i) public { + my_var_A = i + 1; + } + + function indirect_set() public { + my_var_B = my_var_A; + } + } + """ + with slither_from_source(source) as slither: + c = slither.contracts[0] + variables = c.variables_as_dict + funcs = c.available_functions_as_dict() + direct_set = funcs["direct_set(uint256)"] + # Skip entry point and go straight to assignment ir + assign1 = direct_set.nodes[1].irs_ssa[0] + assert isinstance(assign1, Assignment) + + assign2 = direct_set.nodes[1].irs_ssa[0] + assert isinstance(assign2, Assignment) + + indirect_set = funcs["indirect_set()"] + phi = indirect_set.entry_point.irs_ssa[0] + assert isinstance(phi, Phi) + # phi rvalues come from 1, initial value of my_var_a and 2, assignment in direct_set + assert len(phi.rvalues) == 3 + assert all(x.non_ssa_version == variables["my_var_A"] for x in phi.rvalues) + assert assign1.lvalue in phi.rvalues + assert assign2.lvalue in phi.rvalues + + +@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +def test_ssa_phi_callbacks(slither_from_source): + source = """ + pragma solidity ^0.8.11; + contract A { + uint my_var_A; + uint my_var_B; + + function direct_set(uint i) public { + my_var_A = i; + } + + function use_a() public { + // Expect a phi-node here + my_var_B = my_var_A; + B b = new B(); + my_var_A = 3; + b.do_stuff(); + // Expect a phi-node here + my_var_B = my_var_A; + } + } + + contract B { + function do_stuff() public returns (uint) { + // This could be calling back into A + } + } + """ + with slither_from_source(source) as slither: + c = slither.get_contract_from_name("A")[0] + _dump_functions(c) + f = [x for x in c.functions if x.name == "use_a"][0] + var_a = [x for x in c.variables if x.name == "my_var_A"][0] + + entry_phi = [ + x + for x in f.entry_point.irs_ssa + if isinstance(x, Phi) and x.lvalue.non_ssa_version == var_a + ][0] + # The four potential sources are: + # 1. initial value + # 2. my_var_A = i; + # 3. my_var_A = 3; + # 4. phi-value after call to b.do_stuff(), which could be reentrant. + assert len(entry_phi.rvalues) == 4 + + # Locate the first high-level call (should be b.do_stuff()) + call_node = [x for y in f.nodes for x in y.irs_ssa if isinstance(x, HighLevelCall)][0] + n = call_node.node + # Get phi-node after call + after_call_phi = n.irs_ssa[n.irs_ssa.index(call_node) + 1] + # The two sources for this phi node is + # 1. my_var_A = i; + # 2. my_var_A = 3; + assert isinstance(after_call_phi, Phi) + assert len(after_call_phi.rvalues) == 2 + + +@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +def test_storage_refers_to(slither_from_source): + """Test the storage aspects of the SSA IR + + When declaring a var as being storage, start tracking what storage it refers_to. + When a phi-node is created, ensure refers_to is propagated to the phi-node. + Assignments also propagate refers_to. + Whenever a ReferenceVariable is the destination of an assignment (e.g. s.v = 10) + below, create additional versions of the variables it refers to record that a a + write was made. In the current implementation, this is referenced by phis. + """ + source = """ + contract A{ + + struct St{ + int v; + } + + St state0; + St state1; + + function f() public{ + St storage s = state0; + if(true){ + s = state1; + } + s.v = 10; + } +} + """ + with slither_from_source(source) as slither: + c = slither.contracts[0] + f = c.functions[0] + + phinodes = get_ssa_of_type(f, Phi) + # Expect 2 in entrypoint (state0/state1 initial values), 1 at 'ENDIF' and two related to the + # ReferenceVariable write s.v = 10. + assert len(phinodes) == 5 + + # Assign s to state0, s to state1, s.v to 10 + assigns = get_ssa_of_type(f, Assignment) + assert len(assigns) == 3 + + # The IR variables have is_storage + assert all(x.lvalue.is_storage for x in assigns if isinstance(x, LocalIRVariable)) + + # s.v ReferenceVariable points to one of the phi vars... + ref0 = [x.lvalue for x in assigns if isinstance(x.lvalue, ReferenceVariable)][0] + sphis = [x for x in phinodes if x.lvalue == ref0.points_to] + assert len(sphis) == 1 + sphi = sphis[0] + + # ...and that phi refers to the two entry phi-values + entryphi = [x for x in phinodes if x.lvalue in sphi.lvalue.refers_to] + assert len(entryphi) == 2 + + # The remaining two phis are the ones recording that write through ReferenceVariable occured + for ephi in entryphi: + phinodes.remove(ephi) + phinodes.remove(sphi) + assert len(phinodes) == 2 + + # And they are recorded in one of the entry phis + assert phinodes[0].lvalue in entryphi[0].rvalues or entryphi[1].rvalues + assert phinodes[1].lvalue in entryphi[0].rvalues or entryphi[1].rvalues + + +@pytest.mark.skipif( + not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" +) +def test_initial_version_exists_for_locals(slither_from_source): + """ + In solidity you can write statements such as + uint a = a + 1, this test ensures that can be handled for local variables. + """ + src = """ + contract C { + function func() internal { + uint a = a + 1; + } + } + """ + with slither_from_source(src, "0.4.0") as slither: + verify_properties_hold(slither) + c = slither.contracts[0] + f = c.functions[0] + + addition = get_ssa_of_type(f, Binary)[0] + assert addition.type == BinaryType.ADDITION + assert isinstance(addition.variable_right, Constant) + a_0 = addition.variable_left + assert a_0.index == 0 + assert a_0.name == "a" + + assignment = get_ssa_of_type(f, Assignment)[0] + a_1 = assignment.lvalue + assert a_1.index == 1 + assert a_1.name == "a" + assert assignment.rvalue == addition.lvalue + + assert a_0.non_ssa_version == a_1.non_ssa_version + + +@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +@pytest.mark.skipif( + not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" +) +def test_initial_version_exists_for_state_variables(slither_from_source): + """ + In solidity you can write statements such as + uint a = a + 1, this test ensures that can be handled for state variables. + """ + src = """ + contract C { + uint a = a + 1; + } + """ + with slither_from_source(src, "0.4.0") as slither: + verify_properties_hold(slither) + c = slither.contracts[0] + f = c.functions[0] # There will be one artificial ctor function for the state vars + + addition = get_ssa_of_type(f, Binary)[0] + assert addition.type == BinaryType.ADDITION + assert isinstance(addition.variable_right, Constant) + a_0 = addition.variable_left + assert isinstance(a_0, StateIRVariable) + assert a_0.name == "a" + + assignment = get_ssa_of_type(f, Assignment)[0] + a_1 = assignment.lvalue + assert isinstance(a_1, StateIRVariable) + assert a_1.index == a_0.index + 1 + assert a_1.name == "a" + assert assignment.rvalue == addition.lvalue + + assert a_0.non_ssa_version == a_1.non_ssa_version + assert isinstance(a_0.non_ssa_version, StateVariable) + + # No conditional/other function interaction so no phis + assert len(get_ssa_of_type(f, Phi)) == 0 + + +@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +def test_initial_version_exists_for_state_variables_function_assign(slither_from_source): + """ + In solidity you can write statements such as + uint a = a + 1, this test ensures that can be handled for local variables. + """ + # TODO (hbrodin): Could be a detector that a is not used in f + src = """ + contract C { + uint a = f(); + + function f() internal returns(uint) { + return a; + } + } + """ + with slither_from_source(src) as slither: + verify_properties_hold(slither) + c = slither.contracts[0] + f, ctor = c.functions + if f.is_constructor_variables: + f, ctor = ctor, f + + # ctor should have a single call to f that assigns to a + # temporary variable, that is then assigned to a + + call = get_ssa_of_type(ctor, InternalCall)[0] + assert call.node.function == f + assign = get_ssa_of_type(ctor, Assignment)[0] + assert assign.rvalue == call.lvalue + assert isinstance(assign.lvalue, StateIRVariable) + assert assign.lvalue.name == "a" + + # f should have a phi node on entry of a0, a1 and should return + # a2 + phi = get_ssa_of_type(f, Phi)[0] + assert len(phi.rvalues) == 2 + assert assign.lvalue in phi.rvalues + + +@pytest.mark.skipif( + not valid_version("0.4.0"), reason="Solidity version 0.4.0 not available on this platform" +) +def test_return_local_before_assign(slither_from_source): + src = """ + // this require solidity < 0.5 + // a variable can be returned before declared. Ensure it can be + // handled by Slither. + contract A { + function local(bool my_bool) internal returns(uint){ + if(my_bool){ + return a_local; + } + + uint a_local = 10; + } + } + """ + with slither_from_source(src, "0.4.0") as slither: + f = slither.contracts[0].functions[0] + + ret = get_ssa_of_type(f, Return)[0] + assert len(ret.values) == 1 + assert ret.values[0].index == 0 + + assign = get_ssa_of_type(f, Assignment)[0] + assert assign.lvalue.index == 1 + assert assign.lvalue.non_ssa_version == ret.values[0].non_ssa_version + + +@pytest.mark.skipif( + not valid_version("0.5.0"), reason="Solidity version 0.5.0 not available on this platform" +) +def test_shadow_local(slither_from_source): + src = """ + contract A { + // this require solidity 0.5 + function shadowing_local() internal{ + uint local = 0; + { + uint local = 1; + { + uint local = 2; + } + } + } + } + """ + with slither_from_source(src, "0.5.0") as slither: + _dump_functions(slither.contracts[0]) + f = slither.contracts[0].functions[0] + + # Ensure all assignments are to a variable of index 1 + # not using the same IR var. + assert all(map(lambda x: x.lvalue.index == 1, get_ssa_of_type(f, Assignment))) + + +@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +def test_multiple_named_args_returns(slither_from_source): + """Verifies that named arguments and return values have correct versions + + Each arg/ret have an initial version, version 0, and is written once and should + then have version 1. + """ + src = """ + contract A { + function multi(uint arg1, uint arg2) internal returns (uint ret1, uint ret2) { + arg1 = arg1 + 1; + arg2 = arg2 + 2; + ret1 = arg1 + 3; + ret2 = arg2 + 4; + } + }""" + with slither_from_source(src) as slither: + verify_properties_hold(slither) + f = slither.contracts[0].functions[0] + + # Ensure all LocalIRVariables (not TemporaryVariables) have index 1 + assert all( + map( + lambda x: x.lvalue.index == 1 or not isinstance(x.lvalue, LocalIRVariable), + get_ssa_of_type(f, OperationWithLValue), + ) + ) + + +@pytest.mark.xfail(reason="Tests for wanted state of SSA IR, not current.", strict=True) +def test_memory_array(slither_from_source): + src = """ + contract MemArray { + struct A { + uint val1; + uint val2; + } + + function test_array() internal { + A[] memory a= new A[](4); + // Create REF_0 -> a_1[2] + accept_array_entry(a[2]); + + // Create REF_1 -> a_1[3] + accept_array_entry(a[3]); + + A memory alocal; + accept_array_entry(alocal); + + } + + // val_1 = ϕ(val_0, REF_0, REF_1, alocal_1) + // val_0 is an unknown external value + function accept_array_entry(A memory val) public returns (uint) { + uint zero = 0; + b(zero); + // Create REF_2 -> val_1.val1 + return b(val.val1); + } + + function b(uint arg) public returns (uint){ + // arg_1 = ϕ(arg_0, zero_1, REF_2) + return arg + 1; + } + }""" + with slither_from_source(src) as slither: + c = slither.contracts[0] + + ftest_array, faccept, fb = c.functions + + # Locate REF_0/REF_1/alocal (they are all args to the call) + accept_args = [x.arguments[0] for x in get_ssa_of_type(ftest_array, InternalCall)] + + # Check entrypoint of accept_array_entry, it should contain a phi-node + # of expected rvalues + [phi_entry_accept] = get_ssa_of_type(faccept.entry_point, Phi) + for arg in accept_args: + assert arg in phi_entry_accept.rvalues + # NOTE(hbrodin): There should be an additional val_0 in the phi-node. + # That additional val_0 indicates an external caller of this function. + assert len(phi_entry_accept.rvalues) == len(accept_args) + 1 + + # Args used to invoke b + b_args = [x.arguments[0] for x in get_ssa_of_type(faccept, InternalCall)] + + # Check entrypoint of B, it should contain a phi-node of expected + # rvalues + [phi_entry_b] = get_ssa_of_type(fb.entry_point, Phi) + for arg in b_args: + assert arg in phi_entry_b.rvalues + + # NOTE(hbrodin): There should be an additional arg_0 (see comment about phi_entry_accept). + assert len(phi_entry_b.rvalues) == len(b_args) + 1 + + +@pytest.mark.xfail(reason="Tests for wanted state of SSA IR, not current.", strict=True) +def test_storage_array(slither_from_source): + src = """ + contract StorageArray { + struct A { + uint val1; + uint val2; + } + + // NOTE(hbrodin): a is never written, should only become a_0. Same for astorage (astorage_0). Phi-nodes at entry + // should only add new versions of a state variable if it is actually written. + A[] a; + A astorage; + + function test_array() internal { + accept_array_entry(a[2]); + accept_array_entry(a[3]); + accept_array_entry(astorage); + } + + function accept_array_entry(A storage val) internal returns (uint) { + // val is either a[2], a[3] or astorage_0. Ideally this could be identified. + uint five = 5; + + // NOTE(hbrodin): If the following line is enabled, there would ideally be a phi-node representing writes + // to either a or astorage. + //val.val2 = 4; + b(five); + return b(val.val1); + } + + function b(uint value) public returns (uint){ + // Expect a phi-node at the entrypoint + // value_1 = ϕ(value_0, five_0, REF_x), where REF_x is the reference to val.val1 in accept_array_entry. + return value + 1; + } + }""" + with slither_from_source(src) as slither: + c = slither.contracts[0] + _dump_functions(c) + ftest, faccept, fb = c.functions + + # None of a/astorage is written so expect that there are no phi-nodes at entrypoint. + assert len(get_ssa_of_type(ftest.entry_point, Phi)) == 0 + + # Expect all references to start from index 0 (no writes) + assert all(x.variable_left.index == 0 for x in get_ssa_of_type(ftest, Index)) + + [phi_entry_accept] = get_ssa_of_type(faccept.entry_point, Phi) + assert len(phi_entry_accept.rvalues) == 3 # See comment in b above + + [phi_entry_b] = get_ssa_of_type(fb.entry_point, Phi) + assert len(phi_entry_b.rvalues) == 3 # See comment in b above + + +@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +def test_issue_468(slither_from_source): + """ + Ensure issue 468 is corrected as per + https://github.com/crytic/slither/issues/468#issuecomment-620974151 + The one difference is that we allow the phi-function at entry of f to + hold exit state which contains init state and state from branch, which + is a bit redundant. This could be further simplified. + """ + source = """ + contract State { + int state = 0; + function f(int a) public returns (int) { + // phi-node here for state + if (a < 1) { + state += 1; + } + // phi-node here for state + return state; + } + } + """ + with slither_from_source(source) as slither: + c = slither.get_contract_from_name("State")[0] + f = [x for x in c.functions if x.name == "f"][0] + + # Check that there is an entry point phi values for each later value + # plus one additional which is the initial value + entry_ssa = f.entry_point.irs_ssa + assert len(entry_ssa) == 1 + phi_entry = entry_ssa[0] + assert isinstance(phi_entry, Phi) + + # Find the second phi function + endif_node = [x for x in f.nodes if x.type == NodeType.ENDIF][0] + assert len(endif_node.irs_ssa) == 1 + phi_endif = endif_node.irs_ssa[0] + assert isinstance(phi_endif, Phi) + + # Ensure second phi-function contains init-phi and one additional + assert len(phi_endif.rvalues) == 2 + assert phi_entry.lvalue in phi_endif.rvalues + + # Find return-statement and ensure it returns the phi_endif + return_node = [x for x in f.nodes if x.type == NodeType.RETURN][0] + assert len(return_node.irs_ssa) == 1 + ret = return_node.irs_ssa[0] + assert len(ret.values) == 1 + assert phi_endif.lvalue in ret.values + + # Ensure that the phi_endif (which is the end-state for function as well) is in the entry_phi + assert phi_endif.lvalue in phi_entry.rvalues + + +@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +def test_issue_434(slither_from_source): + source = """ + contract Contract { + int public a; + function f() public { + g(); + a += 1; + } + + function e() public { + a -= 1; + } + + function g() public { + e(); + } + } + """ + with slither_from_source(source) as slither: + c = slither.get_contract_from_name("Contract")[0] + + e = [x for x in c.functions if x.name == "e"][0] + f = [x for x in c.functions if x.name == "f"][0] + g = [x for x in c.functions if x.name == "g"][0] + + # Ensure there is a phi-node at the beginning of f and e + phi_entry_e = get_ssa_of_type(e.entry_point, Phi)[0] + phi_entry_f = get_ssa_of_type(f.entry_point, Phi)[0] + # But not at g + assert len(get_ssa_of_type(g, Phi)) == 0 + + # Ensure that the final states of f and e are in the entry-states + add_f = get_filtered_ssa( + f, lambda x: isinstance(x, Binary) and x.type == BinaryType.ADDITION + )[0] + sub_e = get_filtered_ssa( + e, lambda x: isinstance(x, Binary) and x.type == BinaryType.SUBTRACTION + )[0] + assert add_f.lvalue in phi_entry_f.rvalues + assert add_f.lvalue in phi_entry_e.rvalues + assert sub_e.lvalue in phi_entry_f.rvalues + assert sub_e.lvalue in phi_entry_e.rvalues + + # Ensure there is a phi-node after call to g + call = get_ssa_of_type(f, InternalCall)[0] + idx = call.node.irs_ssa.index(call) + aftercall_phi = call.node.irs_ssa[idx + 1] + assert isinstance(aftercall_phi, Phi) + + # Ensure that phi node ^ is used in the addition afterwards + assert aftercall_phi.lvalue in (add_f.variable_left, add_f.variable_right) + + +@pytest.mark.xfail(strict=True, reason="Fails in current slither version. Fix in #1102.") +def test_issue_473(slither_from_source): + source = """ + contract Contract { + function f() public returns (int) { + int a = 1; + if (a > 0) { + a = 2; + } + if (a == 3) { + a = 6; + } + return a; + } + } + """ + with slither_from_source(source) as slither: + c = slither.get_contract_from_name("Contract")[0] + f = c.functions[0] + + phis = get_ssa_of_type(f, Phi) + return_value = get_ssa_of_type(f, Return)[0] + + # There shall be two phi functions + assert len(phis) == 2 + first_phi = phis[0] + second_phi = phis[1] + + # The second phi is the one being returned, if it's the first swap them (iteration order) + if first_phi.lvalue in return_value.values: + first_phi, second_phi = second_phi, first_phi + + # First phi is for [a=1 or a=2] + assert len(first_phi.rvalues) == 2 + + # second is for [a=6 or first phi] + assert first_phi.lvalue in second_phi.rvalues + assert len(second_phi.rvalues) == 2 + + # return is for second phi + assert len(return_value.values) == 1 + assert second_phi.lvalue in return_value.values + + +def test_issue_1748(slither_from_source): + source = """ + contract Contract { + uint[] arr; + function foo(uint i) public { + arr = [1]; + } + } + """ + with slither_from_source(source) as slither: + c = slither.get_contract_from_name("Contract")[0] + f = c.functions[0] + operations = f.slithir_operations + assign_op = operations[0] + assert isinstance(assign_op, InitArray) diff --git a/tests/unit/slithir/test_ternary_expressions.py b/tests/unit/slithir/test_ternary_expressions.py index 68a6089cc..0acd9345d 100644 --- a/tests/unit/slithir/test_ternary_expressions.py +++ b/tests/unit/slithir/test_ternary_expressions.py @@ -1,5 +1,4 @@ from pathlib import Path -from solc_select import solc_select from slither import Slither from slither.core.cfg.node import NodeType from slither.slithir.operations import Assignment @@ -37,7 +36,3 @@ def test_ternary_conversions(solc_binary_path) -> None: vars_assigned += 1 assert vars_declared == vars_assigned - - -if __name__ == "__main__": - test_ternary_conversions() diff --git a/tests/unit/utils/test_functions_ids.py b/tests/unit/utils/test_functions_ids.py index 23888774b..9af42ad85 100644 --- a/tests/unit/utils/test_functions_ids.py +++ b/tests/unit/utils/test_functions_ids.py @@ -57,7 +57,3 @@ def test_functions_ids(solc_binary_path) -> None: assert get_function_id(var.solidity_signature) == int(hashes, 16) else: assert get_function_id(func.solidity_signature) == int(hashes, 16) - - -if __name__ == "__main__": - test_functions_ids() From ca6628ac7f6995e0e50b38dd656448b2e1f9c4a4 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Wed, 29 Mar 2023 10:55:00 -0500 Subject: [PATCH 023/220] use crytic-compile with fixed window's relpath --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 4ec357ac0..10e0deb1f 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ setup( "prettytable>=0.7.2", "pycryptodome>=3.4.6", # "crytic-compile>=0.3.0", - "crytic-compile@git+https://github.com/crytic/crytic-compile.git@master#egg=crytic-compile", + "crytic-compile@git+https://github.com/crytic/crytic-compile.git@windows-rel-path#egg=crytic-compile", "web3>=6.0.0", "solc-select@git+https://github.com/crytic/solc-select.git@query-artifact-path#egg=solc-select", ], From 072cb0b769b9938c62395131cba6f1a3113aa78f Mon Sep 17 00:00:00 2001 From: webthethird Date: Wed, 29 Mar 2023 16:40:51 -0500 Subject: [PATCH 024/220] Find tainted functions/variables from external calls Given a list of functions from one contract, finds tainted functions/variables in other contracts --- slither/utils/upgradeability.py | 91 ++++++++++++++++++++++++++++++--- 1 file changed, 85 insertions(+), 6 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 7b4e8493a..947c4652a 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -1,4 +1,4 @@ -from typing import Optional, Tuple, List, Union +from typing import Optional, Tuple, List, Union, TypedDict from slither.core.declarations import ( Contract, Structure, @@ -19,10 +19,12 @@ from slither.core.variables.local_variable_init_from_tuple import LocalVariableI from slither.core.variables.state_variable import StateVariable from slither.analyses.data_dependency.data_dependency import get_dependencies from slither.core.variables.variable import Variable -from slither.core.expressions.literal import Literal -from slither.core.expressions.identifier import Identifier -from slither.core.expressions.call_expression import CallExpression -from slither.core.expressions.assignment_operation import AssignmentOperation +from slither.core.expressions import ( + Literal, + Identifier, + CallExpression, + AssignmentOperation, +) from slither.core.cfg.node import Node, NodeType from slither.slithir.operations import ( Operation, @@ -61,11 +63,23 @@ from slither.slithir.variables import ( from slither.tools.read_storage.read_storage import SlotInfo, SlitherReadStorage +class TaintedExternalContract(TypedDict): + contract: Contract + functions: List[Function] + variables: List[Variable] + + # pylint: disable=too-many-locals def compare( v1: Contract, v2: Contract ) -> Tuple[ - List[Variable], List[Variable], List[Variable], List[Function], List[Function], List[Function] + List[Variable], + List[Variable], + List[Variable], + List[Function], + List[Function], + List[Function], + List[TaintedExternalContract], ]: """ Compares two versions of a contract. Most useful for upgradeable (logic) contracts, @@ -159,6 +173,11 @@ def compare( ): tainted_variables.append(var) + # Find all external contracts and functions called by new/modified/tainted functions + tainted_contracts = tainted_external_contracts( + new_functions + modified_functions + tainted_functions + ) + return ( missing_vars_in_v2, new_variables, @@ -166,9 +185,69 @@ def compare( new_functions, modified_functions, tainted_functions, + tainted_contracts, ) +def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalContract]: + """ + Takes a list of functions from one contract, finds any calls in these to functions in external contracts, + and determines which variables and functions in the external contracts are tainted by these external calls. + Args: + funcs: a list of Function objects to search for external calls. + + Returns: + TaintedExternalContract(TypedDict) ( + contract: Contract, + functions: List[Function], + variables: List[Variable] + ) + """ + tainted_contracts = {} + + for func in funcs: + for contract, target in func.all_high_level_calls(): + if contract.name not in tainted_contracts: + tainted_contracts[contract.name] = TaintedExternalContract( + contract=contract, functions=[], variables=[] + ) + if ( + isinstance(target, Function) + and target not in funcs + and target not in tainted_contracts[contract.name]["functions"] + and not (target.is_constructor or target.is_fallback or target.is_receive) + ): + tainted_contracts[contract.name]["functions"].append(target) + for var in target.all_state_variables_written(): + if var not in tainted_contracts[contract.name]["variables"]: + tainted_contracts[contract.name]["variables"].append(var) + elif ( + isinstance(target, Variable) + and target not in tainted_contracts[contract.name]["variables"] + and not (target.is_constant or target.is_immutable) + ): + tainted_contracts[contract.name]["variables"].append(target) + tainted_contracts = { + item + for item in tainted_contracts.items() + if len(item[1]["variables"]) > 0 and len(item[1]["functions"]) > 0 + } + for c in tainted_contracts.items(): + contract = c[1]["contract"] + variables = c[1]["variables"] + for var in variables: + read_write = set( + contract.get_functions_reading_from_variable(var) + + contract.get_functions_writing_to_variable(var) + ) + for f in read_write: + if f not in tainted_contracts[contract.name]["functions"] and not ( + f.is_constructor or f.is_fallback or f.is_receive + ): + tainted_contracts[contract.name]["functions"].append(f) + return list(tainted_contracts.values()) + + def get_missing_vars(v1: Contract, v2: Contract) -> List[StateVariable]: """ Gets all non-constant/immutable StateVariables that appear in v1 but not v2 From 42ed0db443ed443fc75afb44e38c4723ee81f937 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Wed, 29 Mar 2023 22:38:09 -0500 Subject: [PATCH 025/220] remove is_top_level dead code --- slither/core/compilation_unit.py | 2 +- slither/core/declarations/contract.py | 2 -- slither/printers/functions/authorization.py | 2 -- slither/printers/functions/cfg.py | 2 -- slither/printers/inheritance/inheritance.py | 4 ---- slither/printers/inheritance/inheritance_graph.py | 2 -- slither/printers/summary/contract.py | 3 --- slither/printers/summary/data_depenency.py | 2 -- slither/printers/summary/function.py | 2 -- slither/printers/summary/human_summary.py | 2 +- slither/printers/summary/slithir.py | 2 -- slither/printers/summary/slithir_ssa.py | 2 -- slither/solc_parsing/slither_compilation_unit_solc.py | 5 +---- 13 files changed, 3 insertions(+), 29 deletions(-) diff --git a/slither/core/compilation_unit.py b/slither/core/compilation_unit.py index 8d7167451..4550ea894 100644 --- a/slither/core/compilation_unit.py +++ b/slither/core/compilation_unit.py @@ -128,7 +128,7 @@ class SlitherCompilationUnit(Context): """list(Contract): List of contracts that are derived and not inherited.""" inheritances = [x.inheritance for x in self.contracts] inheritance = [item for sublist in inheritances for item in sublist] - return [c for c in self.contracts if c not in inheritance and not c.is_top_level] + return [c for c in self.contracts if c not in inheritance] def get_contract_from_name(self, contract_name: Union[str, Constant]) -> List[Contract]: """ diff --git a/slither/core/declarations/contract.py b/slither/core/declarations/contract.py index fd8f761c6..821ccda57 100644 --- a/slither/core/declarations/contract.py +++ b/slither/core/declarations/contract.py @@ -97,8 +97,6 @@ class Contract(SourceMapping): # pylint: disable=too-many-public-methods self._is_upgradeable_proxy: Optional[bool] = None self._upgradeable_version: Optional[str] = None - self.is_top_level = False # heavily used, so no @property - self._initial_state_variables: List["StateVariable"] = [] # ssa self._is_incorrectly_parsed: bool = False diff --git a/slither/printers/functions/authorization.py b/slither/printers/functions/authorization.py index 48b94c297..32efeaabe 100644 --- a/slither/printers/functions/authorization.py +++ b/slither/printers/functions/authorization.py @@ -47,8 +47,6 @@ class PrinterWrittenVariablesAndAuthorization(AbstractPrinter): txt = "" all_tables = [] for contract in self.contracts: # type: ignore - if contract.is_top_level: - continue txt += f"\nContract {contract.name}\n" table = MyPrettyTable( ["Function", "State variables written", "Conditions on msg.sender"] diff --git a/slither/printers/functions/cfg.py b/slither/printers/functions/cfg.py index 3c75f723f..00804a34d 100644 --- a/slither/printers/functions/cfg.py +++ b/slither/printers/functions/cfg.py @@ -19,8 +19,6 @@ class CFG(AbstractPrinter): info = "" all_files = [] for contract in self.contracts: # type: ignore - if contract.is_top_level: - continue for function in contract.functions + list(contract.modifiers): if filename: new_filename = f"{filename}-{contract.name}-{function.full_name}.dot" diff --git a/slither/printers/inheritance/inheritance.py b/slither/printers/inheritance/inheritance.py index 08c05f95f..4ef961a5a 100644 --- a/slither/printers/inheritance/inheritance.py +++ b/slither/printers/inheritance/inheritance.py @@ -36,8 +36,6 @@ class PrinterInheritance(AbstractPrinter): result = {"child_to_base": {}} for child in self.contracts: - if child.is_top_level: - continue info += blue(f"\n+ {child.name}\n") result["child_to_base"][child.name] = {"immediate": [], "not_immediate": []} if child.inheritance: @@ -58,8 +56,6 @@ class PrinterInheritance(AbstractPrinter): result["base_to_child"] = {} for base in self.contracts: - if base.is_top_level: - continue info += green(f"\n+ {base.name}") + "\n" children = list(self._get_child_contracts(base)) diff --git a/slither/printers/inheritance/inheritance_graph.py b/slither/printers/inheritance/inheritance_graph.py index 2ec9dee1a..95022c067 100644 --- a/slither/printers/inheritance/inheritance_graph.py +++ b/slither/printers/inheritance/inheritance_graph.py @@ -194,8 +194,6 @@ class PrinterInheritanceGraph(AbstractPrinter): content = 'digraph "" {\n' for c in self.contracts: - if c.is_top_level: - continue content += self._summary(c) + "\n" content += "}" diff --git a/slither/printers/summary/contract.py b/slither/printers/summary/contract.py index 5fee94416..3980c63fc 100644 --- a/slither/printers/summary/contract.py +++ b/slither/printers/summary/contract.py @@ -28,9 +28,6 @@ class ContractSummary(AbstractPrinter): all_contracts = [] for c in self.contracts: - if c.is_top_level: - continue - is_upgradeable_proxy = c.is_upgradeable_proxy is_upgradeable = c.is_upgradeable diff --git a/slither/printers/summary/data_depenency.py b/slither/printers/summary/data_depenency.py index f1c0dc8d5..864652978 100644 --- a/slither/printers/summary/data_depenency.py +++ b/slither/printers/summary/data_depenency.py @@ -40,8 +40,6 @@ class DataDependency(AbstractPrinter): txt = "" for c in self.contracts: - if c.is_top_level: - continue txt += f"\nContract {c.name}\n" table = MyPrettyTable(["Variable", "Dependencies"]) for v in c.state_variables: diff --git a/slither/printers/summary/function.py b/slither/printers/summary/function.py index 7f1633865..232980425 100644 --- a/slither/printers/summary/function.py +++ b/slither/printers/summary/function.py @@ -33,8 +33,6 @@ class FunctionSummary(AbstractPrinter): all_txt = "" for c in self.contracts: - if c.is_top_level: - continue (name, inheritance, var, func_summaries, modif_summaries) = c.get_summary() txt = f"\nContract {name}" txt += "\nContract vars: " + str(var) diff --git a/slither/printers/summary/human_summary.py b/slither/printers/summary/human_summary.py index ec8663198..2fc72f922 100644 --- a/slither/printers/summary/human_summary.py +++ b/slither/printers/summary/human_summary.py @@ -205,7 +205,7 @@ class PrinterHumanSummary(AbstractPrinter): def _number_contracts(self): if self.slither.crytic_compile is None: return len(self.slither.contracts), 0, 0 - contracts = [c for c in self.slither.contracts if not c.is_top_level] + contracts = [c for c in self.slither.contracts] deps = [c for c in contracts if c.is_from_dependency()] tests = [c for c in contracts if c.is_test] return len(contracts) - len(deps) - len(tests), len(deps), len(tests) diff --git a/slither/printers/summary/slithir.py b/slither/printers/summary/slithir.py index be9ebc8f5..cbdb50dcc 100644 --- a/slither/printers/summary/slithir.py +++ b/slither/printers/summary/slithir.py @@ -36,8 +36,6 @@ class PrinterSlithIR(AbstractPrinter): txt = "" for compilation_unit in self.slither.compilation_units: for contract in compilation_unit.contracts: - if contract.is_top_level: - continue txt += f"Contract {contract.name}\n" for function in contract.functions: txt += f'\tFunction {function.canonical_name} {"" if function.is_shadowed else "(*)"}\n' diff --git a/slither/printers/summary/slithir_ssa.py b/slither/printers/summary/slithir_ssa.py index e7f2ca1e3..052597299 100644 --- a/slither/printers/summary/slithir_ssa.py +++ b/slither/printers/summary/slithir_ssa.py @@ -21,8 +21,6 @@ class PrinterSlithIRSSA(AbstractPrinter): txt = "" for contract in self.contracts: - if contract.is_top_level: - continue txt += f"Contract {contract.name}" + "\n" for function in contract.functions: txt += f"\tFunction {function.canonical_name}" + "\n" diff --git a/slither/solc_parsing/slither_compilation_unit_solc.py b/slither/solc_parsing/slither_compilation_unit_solc.py index b1c2387f0..cb94a7d9e 100644 --- a/slither/solc_parsing/slither_compilation_unit_solc.py +++ b/slither/solc_parsing/slither_compilation_unit_solc.py @@ -402,10 +402,7 @@ class SlitherCompilationUnitSolc(CallerContextExpression): # First we save all the contracts in a dict # the key is the contractid for contract in self._underlying_contract_to_parser: - if ( - contract.name.startswith("SlitherInternalTopLevelContract") - and not contract.is_top_level - ): + if contract.name.startswith("SlitherInternalTopLevelContract"): raise SlitherException( # region multi-line-string """Your codebase has a contract named 'SlitherInternalTopLevelContract'. From b077fe3e49b178addc8022a8f8c33e01215b91df Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Wed, 29 Mar 2023 22:43:01 -0500 Subject: [PATCH 026/220] lint --- slither/printers/summary/human_summary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/printers/summary/human_summary.py b/slither/printers/summary/human_summary.py index 2fc72f922..9eacb97c6 100644 --- a/slither/printers/summary/human_summary.py +++ b/slither/printers/summary/human_summary.py @@ -205,7 +205,7 @@ class PrinterHumanSummary(AbstractPrinter): def _number_contracts(self): if self.slither.crytic_compile is None: return len(self.slither.contracts), 0, 0 - contracts = [c for c in self.slither.contracts] + contracts = self.slither.contracts deps = [c for c in contracts if c.is_from_dependency()] tests = [c for c in contracts if c.is_test] return len(contracts) - len(deps) - len(tests), len(deps), len(tests) From 08f865766cc1faf87baadec5773a72a2219775a3 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 30 Mar 2023 09:06:09 -0500 Subject: [PATCH 027/220] fix versions reqs. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 430cac343..59fd81ab5 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ setup( "packaging", "prettytable>=0.7.2", "pycryptodome>=3.4.6", - "crytic-compile>=0.3.1,<0.4.0", + # "crytic-compile>=0.3.1,<0.4.0", "crytic-compile@git+https://github.com/crytic/crytic-compile.git@windows-rel-path#egg=crytic-compile", "web3>=6.0.0", "solc-select@git+https://github.com/crytic/solc-select.git@query-artifact-path#egg=solc-select", From 0dd62b76cbd764dcaeae0da43417e4b5a27927a7 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 30 Mar 2023 09:43:43 -0500 Subject: [PATCH 028/220] update contributing --- CONTRIBUTING.md | 71 ++++++++++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 27 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8568ef709..c46bf5658 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,7 +7,7 @@ If you're unsure where to start, we recommend our [`good first issue`](https://g Bug reports and feature suggestions can be submitted to our issue tracker. For bug reports, attaching the contract that caused the bug will help us in debugging and resolving the issue quickly. If you find a security vulnerability, do not open an issue; email opensource@trailofbits.com instead. ## Questions -Questions can be submitted to the issue tracker, but you may get a faster response if you ask in our [chat room](https://empireslacking.herokuapp.com/) (in the #ethereum channel). +Questions can be submitted to the "Discussions" page, and you may also join our [chat room](https://empireslacking.herokuapp.com/) (in the #ethereum channel). ## Code Slither uses the pull request contribution model. Please make an account on Github, fork this repo, and submit code contributions via pull request. For more documentation, look [here](https://guides.github.com/activities/forking/). @@ -41,7 +41,7 @@ A code walkthrough is available [here](https://www.youtube.com/watch?v=EUl3UlYSl ## Development Environment Instructions for installing a development version of Slither can be found in our [wiki](https://github.com/crytic/slither/wiki/Developer-installation). -To run the unit tests, you need to clone this repository and run `pip install ".[dev]"`. +To run the unit tests, you need to clone this repository and run `make test`. Run a specific test with `make test TESTS=$test_name`. ### Linters @@ -49,37 +49,54 @@ Several linters and security checkers are run on the PRs. To run them locally in the root dir of the repository: -- `pylint slither tests --rcfile pyproject.toml` -- `black . --config pyproject.toml` +- `make lint` + +> Note, this only validates but does not modify the code. + +To automatically reformat the code: + +- `make reformat` We use pylint `2.13.4`, black `22.3.0`. -### Detectors tests +### Testing + +Slither's test suite is divided into three categories end-to-end (`tests/e2e`), unit (`tests/unit`), and tools (`tests/tools/`). + +How do I know what kind of test(s) to write? + +- End-to-end: functionality that requires invoking `Slither` and inspecting some output such as printers and detectors. +- Unit: additions and modifications to objects should be accompanied by a unit test that defines the expected behavior. Aim to write functions in as pure a way as possible such that they are easier to test. +- Tools: tools built on top of Slither (`slither/tools) but not apart of its core functionality + +#### Adding detector tests For each new detector, at least one regression tests must be present. -- Create a test in `tests` -- Update `ALL_TEST` in `tests/test_detectors.py` -- Run `python ./tests/test_detectors.py --generate`. This will generate the json artifacts in `tests/expected_json`. Add the generated files to git. - - If updating an existing detector, identify the respective json artifacts and then delete them, or run `python ./tests/test_detectors.py --overwrite` instead. -- Run `pytest ./tests/test_detectors.py` and check that everything worked. - -To see the tests coverage, run `pytest tests/test_detectors.py --cov=slither/detectors --cov-branch --cov-report html`. -To run tests for a specific detector, run `pytest tests/test_detectors.py -k ReentrancyReadBeforeWritten` (the detector's class name is the argument). -To run tests for a specific version, run `pytest tests/test_detectors.py -k 0.7.6`. -The IDs of tests can be inspected using `pytest tests/test_detectors.py --collect-only`. - -### Parser tests -- Create a test in `tests/ast-parsing` -- Run `python ./tests/test_ast_parsing.py --compile`. This will compile the artifact in `tests/ast-parsing/compile`. Add the compiled artifact to git. -- Run `python ./tests/test_ast_parsing.py --generate`. This will generate the json artifacts in `tests/ast-parsing/expected_json`. Add the generated files to git. -- Run `pytest ./tests/test_ast_parsing.py` and check that everything worked. - -To see the tests coverage, run `pytest tests/test_ast_parsing.py --cov=slither/solc_parsing --cov-branch --cov-report html` -To run tests for a specific test case, run `pytest tests/test_ast_parsing.py -k user_defined_value_type` (the filename is the argument). -To run tests for a specific version, run `pytest tests/test_ast_parsing.py -k 0.8.12`. -To run tests for a specific compiler json format, run `pytest tests/test_ast_parsing.py -k legacy` (can be legacy or compact). -The IDs of tests can be inspected using ``pytest tests/test_ast_parsing.py --collect-only`. +1. Create a test in `tests/e2e/detectors` +2. Update `ALL_TEST` in `tests/e2e/detectors/test_detectors.py` +3. Run `python tests/e2e/detectors/test_detectors.py --generate`. This will generate the json artifacts in `tests/expected_json`. Add the generated files to git. If updating an existing detector, identify the respective json artifacts and then delete them, or run `python ./tests/test_detectors.py --overwrite` instead. +4. Run `pytest tests/e2e/detectors/test_detectors.py` and check that everything worked. + +> ##### Helpful commands +> - To see the tests coverage, run `pytest tests/e2e/detectors/test_detectors.py --cov=slither/detectors --cov-branch --cov-report html`. +> - To run tests for a specific detector, run `pytest tests/e2e/detectors/test_detectors.py -k ReentrancyReadBeforeWritten`(the detector's class name is the argument). +> - To run tests for a specific version, run `pytest tests/e2e/detectors/test_detectors.py -k 0.7.6`. +> - The IDs of tests can be inspected using `pytest tests/e2e/detectors/test_detectors.py --collect-only`. + +#### Adding parsing tests + +1. Create a test in `tests/e2e/solc_parsing/` +2. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --compile`. This will compile the artifact in `tests/e2e/solc_parsing/compile`. Add the compiled artifact to git. +3. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --generate`. This will generate the json artifacts in `tests/e2e/solc_parsing/expected_json`. Add the generated files to git. +4. Run `pytest tests/e2e/solc_parsing/test_ast_parsing.py` and check that everything worked. + +> ##### Helpful commands +> - To see the tests coverage, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py --cov=slither/solc_parsing --cov-branch --cov-report html` +> - To run tests for a specific test case, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py -k user_defined_value_type` (the filename is the argument). +> - To run tests for a specific version, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py -k 0.8.12`. +> - To run tests for a specific compiler json format, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py -k legacy` (can be legacy or compact). +> - The IDs of tests can be inspected using ``pytest tests/e2e/solc_parsing/test_ast_parsing.py --collect-only`. ### Synchronization with crytic-compile By default, `slither` follows either the latest version of crytic-compile in pip, or `crytic-compile@master` (look for dependencies in [`setup.py`](./setup.py). If crytic-compile development comes with breaking changes, the process to update `slither` is: From 16547c43ec1e9352661993ef6b8c628083a80d4d Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 30 Mar 2023 10:16:59 -0500 Subject: [PATCH 029/220] markdownlint --- CONTRIBUTING.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c46bf5658..d045ef412 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,15 +1,19 @@ # Contributing to Slither + First, thanks for your interest in contributing to Slither! We welcome and appreciate all contributions, including bug reports, feature suggestions, tutorials/blog posts, and code improvements. If you're unsure where to start, we recommend our [`good first issue`](https://github.com/crytic/slither/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) and [`help wanted`](https://github.com/crytic/slither/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) issue labels. ## Bug reports and feature suggestions + Bug reports and feature suggestions can be submitted to our issue tracker. For bug reports, attaching the contract that caused the bug will help us in debugging and resolving the issue quickly. If you find a security vulnerability, do not open an issue; email opensource@trailofbits.com instead. ## Questions + Questions can be submitted to the "Discussions" page, and you may also join our [chat room](https://empireslacking.herokuapp.com/) (in the #ethereum channel). ## Code + Slither uses the pull request contribution model. Please make an account on Github, fork this repo, and submit code contributions via pull request. For more documentation, look [here](https://guides.github.com/activities/forking/). Some pull request guidelines: @@ -23,6 +27,7 @@ Some pull request guidelines: ## Directory Structure Below is a rough outline of slither's design: + ```text . ├── analyses # Provides additional info such as data dependency @@ -39,6 +44,7 @@ Below is a rough outline of slither's design: A code walkthrough is available [here](https://www.youtube.com/watch?v=EUl3UlYSluU). ## Development Environment + Instructions for installing a development version of Slither can be found in our [wiki](https://github.com/crytic/slither/wiki/Developer-installation). To run the unit tests, you need to clone this repository and run `make test`. Run a specific test with `make test TESTS=$test_name`. @@ -66,22 +72,23 @@ Slither's test suite is divided into three categories end-to-end (`tests/e2e`), How do I know what kind of test(s) to write? - End-to-end: functionality that requires invoking `Slither` and inspecting some output such as printers and detectors. -- Unit: additions and modifications to objects should be accompanied by a unit test that defines the expected behavior. Aim to write functions in as pure a way as possible such that they are easier to test. -- Tools: tools built on top of Slither (`slither/tools) but not apart of its core functionality +- Unit: additions and modifications to objects should be accompanied by a unit test that defines the expected behavior. Aim to write functions in as pure a way as possible such that they are easier to test. +- Tools: tools built on top of Slither (`slither/tools) but not apart of its core functionality #### Adding detector tests For each new detector, at least one regression tests must be present. 1. Create a test in `tests/e2e/detectors` -2. Update `ALL_TEST` in `tests/e2e/detectors/test_detectors.py` +2. Update `ALL_TEST` in `tests/e2e/detectors/test_detectors.py` 3. Run `python tests/e2e/detectors/test_detectors.py --generate`. This will generate the json artifacts in `tests/expected_json`. Add the generated files to git. If updating an existing detector, identify the respective json artifacts and then delete them, or run `python ./tests/test_detectors.py --overwrite` instead. 4. Run `pytest tests/e2e/detectors/test_detectors.py` and check that everything worked. > ##### Helpful commands -> - To see the tests coverage, run `pytest tests/e2e/detectors/test_detectors.py --cov=slither/detectors --cov-branch --cov-report html`. -> - To run tests for a specific detector, run `pytest tests/e2e/detectors/test_detectors.py -k ReentrancyReadBeforeWritten`(the detector's class name is the argument). -> - To run tests for a specific version, run `pytest tests/e2e/detectors/test_detectors.py -k 0.7.6`. +> +> - To see the tests coverage, run `pytest tests/e2e/detectors/test_detectors.py --cov=slither/detectors --cov-branch --cov-report html`. +> - To run tests for a specific detector, run `pytest tests/e2e/detectors/test_detectors.py -k ReentrancyReadBeforeWritten`(the detector's class name is the argument). +> - To run tests for a specific version, run `pytest tests/e2e/detectors/test_detectors.py -k 0.7.6`. > - The IDs of tests can be inspected using `pytest tests/e2e/detectors/test_detectors.py --collect-only`. #### Adding parsing tests @@ -92,6 +99,7 @@ For each new detector, at least one regression tests must be present. 4. Run `pytest tests/e2e/solc_parsing/test_ast_parsing.py` and check that everything worked. > ##### Helpful commands +> > - To see the tests coverage, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py --cov=slither/solc_parsing --cov-branch --cov-report html` > - To run tests for a specific test case, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py -k user_defined_value_type` (the filename is the argument). > - To run tests for a specific version, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py -k 0.8.12`. @@ -99,7 +107,9 @@ For each new detector, at least one regression tests must be present. > - The IDs of tests can be inspected using ``pytest tests/e2e/solc_parsing/test_ast_parsing.py --collect-only`. ### Synchronization with crytic-compile + By default, `slither` follows either the latest version of crytic-compile in pip, or `crytic-compile@master` (look for dependencies in [`setup.py`](./setup.py). If crytic-compile development comes with breaking changes, the process to update `slither` is: + - Update `slither/setup.py` to point to the related crytic-compile's branch - Create a PR in `slither` and ensure it passes the CI - Once the development branch is merged in `crytic-compile@master`, ensure `slither` follows the `master` branch From 289337c23618e3cf8f96f19df7fc15328a287ecf Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 30 Mar 2023 10:37:14 -0500 Subject: [PATCH 030/220] remove duplicate header --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d045ef412..686ded908 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -84,7 +84,7 @@ For each new detector, at least one regression tests must be present. 3. Run `python tests/e2e/detectors/test_detectors.py --generate`. This will generate the json artifacts in `tests/expected_json`. Add the generated files to git. If updating an existing detector, identify the respective json artifacts and then delete them, or run `python ./tests/test_detectors.py --overwrite` instead. 4. Run `pytest tests/e2e/detectors/test_detectors.py` and check that everything worked. -> ##### Helpful commands +> ##### Helpful commands for detector tests > > - To see the tests coverage, run `pytest tests/e2e/detectors/test_detectors.py --cov=slither/detectors --cov-branch --cov-report html`. > - To run tests for a specific detector, run `pytest tests/e2e/detectors/test_detectors.py -k ReentrancyReadBeforeWritten`(the detector's class name is the argument). @@ -98,7 +98,7 @@ For each new detector, at least one regression tests must be present. 3. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --generate`. This will generate the json artifacts in `tests/e2e/solc_parsing/expected_json`. Add the generated files to git. 4. Run `pytest tests/e2e/solc_parsing/test_ast_parsing.py` and check that everything worked. -> ##### Helpful commands +> ##### Helpful commands for parsing tests > > - To see the tests coverage, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py --cov=slither/solc_parsing --cov-branch --cov-report html` > - To run tests for a specific test case, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py -k user_defined_value_type` (the filename is the argument). From 4b6dd02ac8072b7e8ff0f9401c29c808c27d6499 Mon Sep 17 00:00:00 2001 From: webthethird Date: Thu, 30 Mar 2023 16:06:38 -0500 Subject: [PATCH 031/220] Find contracts tainted by inheriting a tainted contract and functions that call tainted functions --- slither/utils/upgradeability.py | 38 +++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 947c4652a..1f5ef380c 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -204,6 +204,7 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon ) """ tainted_contracts = {} + tainted_list = [] for func in funcs: for contract, target in func.all_high_level_calls(): @@ -227,12 +228,10 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon and not (target.is_constant or target.is_immutable) ): tainted_contracts[contract.name]["variables"].append(target) - tainted_contracts = { - item - for item in tainted_contracts.items() - if len(item[1]["variables"]) > 0 and len(item[1]["functions"]) > 0 - } for c in tainted_contracts.items(): + if len(c[1]["functions"]) == 0 and len(c[1]["variables"]) == 0: + continue + tainted_list.append(c[1]) contract = c[1]["contract"] variables = c[1]["variables"] for var in variables: @@ -245,7 +244,34 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon f.is_constructor or f.is_fallback or f.is_receive ): tainted_contracts[contract.name]["functions"].append(f) - return list(tainted_contracts.values()) + return tainted_list + + +def tainted_inheriting_contracts( + tainted_contracts: List[TaintedExternalContract], + contracts: List[Contract] = None +) -> List[TaintedExternalContract]: + for tainted in tainted_contracts: + contract = tainted['contract'] + if contracts is None: + contracts = contract.compilation_unit.contracts + for c in contracts: + inheritance = [i.name for i in c.inheritance] + if contract.name in inheritance and c.name not in tainted_contracts: + new_taint = TaintedExternalContract( + contract=c, functions=[], variables=[] + ) + for f in c.functions_declared: + internal_calls = f.all_internal_calls() + if ( + any(str(call) == str(t) for t in tainted['functions'] for call in internal_calls) + or any(str(var) == str(t) for t in tainted['variables'] + for var in f.all_state_variables_read() + f.all_state_variables_written()) + ): + new_taint['functions'].append(f) + if len(new_taint['functions']) > 0: + tainted_contracts.append(new_taint) + return tainted_contracts def get_missing_vars(v1: Contract, v2: Contract) -> List[StateVariable]: From 0deff18d01e73783072ba7483efe713a2ad7f57c Mon Sep 17 00:00:00 2001 From: webthethird Date: Thu, 30 Mar 2023 16:16:23 -0500 Subject: [PATCH 032/220] Add docstring to `tainted_inheriting_contracts` --- slither/utils/upgradeability.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 1f5ef380c..8cf7595cf 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -251,6 +251,18 @@ def tainted_inheriting_contracts( tainted_contracts: List[TaintedExternalContract], contracts: List[Contract] = None ) -> List[TaintedExternalContract]: + """ + Takes a list of TaintedExternalContract obtained from tainted_external_contracts, and finds any contracts which + inherit a tainted contract, as well as any functions that call tainted functions or read tainted variables in + the inherited contract. + Args: + tainted_contracts: the list obtained from `tainted_external_contracts` or `compare`. + contracts: (optional) the list of contracts to check for inheritance. If not provided, defaults to + `contract.compilation_unit.contracts` for each contract in tainted_contracts. + + Returns: + An updated list of TaintedExternalContract, including all from the input list. + """ for tainted in tainted_contracts: contract = tainted['contract'] if contracts is None: From 5967958c71e58cc3fcd7cacecf162f8fb0916385 Mon Sep 17 00:00:00 2001 From: webthethird Date: Thu, 30 Mar 2023 16:18:27 -0500 Subject: [PATCH 033/220] Black --- slither/utils/upgradeability.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 8cf7595cf..2fa20f0f4 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -248,8 +248,7 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon def tainted_inheriting_contracts( - tainted_contracts: List[TaintedExternalContract], - contracts: List[Contract] = None + tainted_contracts: List[TaintedExternalContract], contracts: List[Contract] = None ) -> List[TaintedExternalContract]: """ Takes a list of TaintedExternalContract obtained from tainted_external_contracts, and finds any contracts which @@ -264,24 +263,24 @@ def tainted_inheriting_contracts( An updated list of TaintedExternalContract, including all from the input list. """ for tainted in tainted_contracts: - contract = tainted['contract'] + contract = tainted["contract"] if contracts is None: contracts = contract.compilation_unit.contracts for c in contracts: inheritance = [i.name for i in c.inheritance] if contract.name in inheritance and c.name not in tainted_contracts: - new_taint = TaintedExternalContract( - contract=c, functions=[], variables=[] - ) + new_taint = TaintedExternalContract(contract=c, functions=[], variables=[]) for f in c.functions_declared: internal_calls = f.all_internal_calls() - if ( - any(str(call) == str(t) for t in tainted['functions'] for call in internal_calls) - or any(str(var) == str(t) for t in tainted['variables'] - for var in f.all_state_variables_read() + f.all_state_variables_written()) + if any( + str(call) == str(t) for t in tainted["functions"] for call in internal_calls + ) or any( + str(var) == str(t) + for t in tainted["variables"] + for var in f.all_state_variables_read() + f.all_state_variables_written() ): - new_taint['functions'].append(f) - if len(new_taint['functions']) > 0: + new_taint["functions"].append(f) + if len(new_taint["functions"]) > 0: tainted_contracts.append(new_taint) return tainted_contracts From 675dbea4334386d2a343652483296ae8c30c08a1 Mon Sep 17 00:00:00 2001 From: webthethird Date: Fri, 31 Mar 2023 09:32:08 -0500 Subject: [PATCH 034/220] Get tainted variables in `tainted_inheriting_contracts` in addition to tainted functions --- slither/utils/upgradeability.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 2fa20f0f4..805da9905 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -280,7 +280,20 @@ def tainted_inheriting_contracts( for var in f.all_state_variables_read() + f.all_state_variables_written() ): new_taint["functions"].append(f) + for var in f.all_state_variables_read() + f.all_state_variables_written(): + if not (var in tainted["variables"] or var in new_taint["variables"]): + new_taint["variables"].append(var) if len(new_taint["functions"]) > 0: + for var in new_taint["variables"]: + read_write = set( + contract.get_functions_reading_from_variable(var) + + contract.get_functions_writing_to_variable(var) + ) + for f in read_write: + if f not in tainted["functions"] + new_taint["functions"] and not ( + f.is_constructor or f.is_fallback or f.is_receive + ): + new_taint["functions"].append(f) tainted_contracts.append(new_taint) return tainted_contracts From d88bba49856fe6a823aaf7855916751e2478b5b2 Mon Sep 17 00:00:00 2001 From: webthethird Date: Fri, 31 Mar 2023 09:38:25 -0500 Subject: [PATCH 035/220] Fix too many values to unpack in test_upgradeability_util.py --- tests/unit/utils/test_upgradeability_util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/utils/test_upgradeability_util.py b/tests/unit/utils/test_upgradeability_util.py index 7d6fb82da..a291d5680 100644 --- a/tests/unit/utils/test_upgradeability_util.py +++ b/tests/unit/utils/test_upgradeability_util.py @@ -22,7 +22,7 @@ def test_upgrades_compare() -> None: sl = Slither(os.path.join(TEST_DATA_DIR, "TestUpgrades-0.8.2.sol")) v1 = sl.get_contract_from_name("ContractV1")[0] v2 = sl.get_contract_from_name("ContractV2")[0] - missing_vars, new_vars, tainted_vars, new_funcs, modified_funcs, tainted_funcs = compare(v1, v2) + missing_vars, new_vars, tainted_vars, new_funcs, modified_funcs, tainted_funcs, tainted_contracts = compare(v1, v2) assert len(missing_vars) == 0 assert new_vars == [v2.get_state_variable_from_name("stateC")] assert tainted_vars == [ From d9f5dbb6cd5085c571774e3a6132fc8387cd78a8 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Fri, 31 Mar 2023 09:57:03 -0500 Subject: [PATCH 036/220] support new bytes expr in ternary --- slither/utils/expression_manipulations.py | 11 +++++++++-- tests/unit/slithir/test_data/ternary_expressions.sol | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/slither/utils/expression_manipulations.py b/slither/utils/expression_manipulations.py index 753778be9..75d97042c 100644 --- a/slither/utils/expression_manipulations.py +++ b/slither/utils/expression_manipulations.py @@ -21,7 +21,7 @@ from slither.core.expressions.new_array import NewArray from slither.core.expressions.new_contract import NewContract from slither.core.expressions.tuple_expression import TupleExpression from slither.core.expressions.type_conversion import TypeConversion - +from slither.core.expressions.new_elementary_type import NewElementaryType # pylint: disable=protected-access def f_expressions( @@ -100,7 +100,14 @@ class SplitTernaryExpression: if isinstance( expression, - (Literal, Identifier, NewArray, NewContract, ElementaryTypeNameExpression), + ( + Literal, + Identifier, + NewArray, + NewContract, + ElementaryTypeNameExpression, + NewElementaryType, + ), ): return diff --git a/tests/unit/slithir/test_data/ternary_expressions.sol b/tests/unit/slithir/test_data/ternary_expressions.sol index c73a2b6b3..ebfb96e80 100644 --- a/tests/unit/slithir/test_data/ternary_expressions.sol +++ b/tests/unit/slithir/test_data/ternary_expressions.sol @@ -49,4 +49,8 @@ contract C { myIntegers[cond ? a : b] ); } + + function i(bool cond) public { + bytes memory a = new bytes(cond ? 1 : 2); + } } From cba0dc95111b85d0896e870531dc86255c9fd923 Mon Sep 17 00:00:00 2001 From: webthethird Date: Fri, 31 Mar 2023 10:13:07 -0500 Subject: [PATCH 037/220] Add python types --- slither/utils/upgradeability.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 805da9905..0bf01b373 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -203,8 +203,8 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon variables: List[Variable] ) """ - tainted_contracts = {} - tainted_list = [] + tainted_contracts: dict[str, TaintedExternalContract] = {} + tainted_list: list[TaintedExternalContract] = [] for func in funcs: for contract, target in func.all_high_level_calls(): From 386c3e14a36aa8007d0b911e46d622c89abe3f2e Mon Sep 17 00:00:00 2001 From: webthethird Date: Fri, 31 Mar 2023 10:31:43 -0500 Subject: [PATCH 038/220] Pylint and black --- slither/utils/upgradeability.py | 56 ++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 0bf01b373..1c2869da6 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -266,35 +266,39 @@ def tainted_inheriting_contracts( contract = tainted["contract"] if contracts is None: contracts = contract.compilation_unit.contracts + contracts = [ + c + for c in contracts + if c.name not in tainted_contracts and c.name in [i.name for i in c.inheritance] + ] for c in contracts: - inheritance = [i.name for i in c.inheritance] - if contract.name in inheritance and c.name not in tainted_contracts: - new_taint = TaintedExternalContract(contract=c, functions=[], variables=[]) - for f in c.functions_declared: - internal_calls = f.all_internal_calls() - if any( - str(call) == str(t) for t in tainted["functions"] for call in internal_calls - ) or any( - str(var) == str(t) - for t in tainted["variables"] - for var in f.all_state_variables_read() + f.all_state_variables_written() + new_taint = TaintedExternalContract(contract=c, functions=[], variables=[]) + for f in c.functions_declared: + internal_calls = f.all_internal_calls() + if any( + str(call) == str(t) for t in tainted["functions"] for call in internal_calls + ) or any( + str(var) == str(t) + for t in tainted["variables"] + for var in f.all_state_variables_read() + f.all_state_variables_written() + ): + new_taint["functions"].append(f) + for f in new_taint["functions"]: + for var in f.all_state_variables_read() + f.all_state_variables_written(): + if not (var in tainted["variables"] or var in new_taint["variables"]): + new_taint["variables"].append(var) + for var in new_taint["variables"]: + read_write = set( + contract.get_functions_reading_from_variable(var) + + contract.get_functions_writing_to_variable(var) + ) + for f in read_write: + if f not in tainted["functions"] + new_taint["functions"] and not ( + f.is_constructor or f.is_fallback or f.is_receive ): new_taint["functions"].append(f) - for var in f.all_state_variables_read() + f.all_state_variables_written(): - if not (var in tainted["variables"] or var in new_taint["variables"]): - new_taint["variables"].append(var) - if len(new_taint["functions"]) > 0: - for var in new_taint["variables"]: - read_write = set( - contract.get_functions_reading_from_variable(var) - + contract.get_functions_writing_to_variable(var) - ) - for f in read_write: - if f not in tainted["functions"] + new_taint["functions"] and not ( - f.is_constructor or f.is_fallback or f.is_receive - ): - new_taint["functions"].append(f) - tainted_contracts.append(new_taint) + if len(new_taint["functions"]) > 0: + tainted_contracts.append(new_taint) return tainted_contracts From 20f5825fb6bed64d15a2988c8423ebb226a3c143 Mon Sep 17 00:00:00 2001 From: webthethird Date: Fri, 31 Mar 2023 11:37:05 -0500 Subject: [PATCH 039/220] Pylint and black --- tests/unit/utils/test_upgradeability_util.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/unit/utils/test_upgradeability_util.py b/tests/unit/utils/test_upgradeability_util.py index a291d5680..8dfbccc61 100644 --- a/tests/unit/utils/test_upgradeability_util.py +++ b/tests/unit/utils/test_upgradeability_util.py @@ -22,8 +22,16 @@ def test_upgrades_compare() -> None: sl = Slither(os.path.join(TEST_DATA_DIR, "TestUpgrades-0.8.2.sol")) v1 = sl.get_contract_from_name("ContractV1")[0] v2 = sl.get_contract_from_name("ContractV2")[0] - missing_vars, new_vars, tainted_vars, new_funcs, modified_funcs, tainted_funcs, tainted_contracts = compare(v1, v2) - assert len(missing_vars) == 0 + ( + missing_vars, + new_vars, + tainted_vars, + new_funcs, + modified_funcs, + tainted_funcs, + tainted_contracts, + ) = compare(v1, v2) + assert len(missing_vars) == len(tainted_contracts) == 0 assert new_vars == [v2.get_state_variable_from_name("stateC")] assert tainted_vars == [ v2.get_state_variable_from_name("stateB"), From f585d2bb862a8e5a3046c1df3576cbdacacbaa1d Mon Sep 17 00:00:00 2001 From: webthethird Date: Fri, 31 Mar 2023 14:06:13 -0500 Subject: [PATCH 040/220] Add TODO --- slither/utils/upgradeability.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 1c2869da6..1e5b20a69 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -17,6 +17,7 @@ from slither.core.solidity_types import ( from slither.core.variables.local_variable import LocalVariable from slither.core.variables.local_variable_init_from_tuple import LocalVariableInitFromTuple from slither.core.variables.state_variable import StateVariable +from slither.slithir.variables import TemporaryVariable from slither.analyses.data_dependency.data_dependency import get_dependencies from slither.core.variables.variable import Variable from slither.core.expressions import ( @@ -208,6 +209,8 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon for func in funcs: for contract, target in func.all_high_level_calls(): + if contract.is_library: + continue if contract.name not in tainted_contracts: tainted_contracts[contract.name] = TaintedExternalContract( contract=contract, functions=[], variables=[] @@ -406,7 +409,7 @@ def encode_ir_for_compare(ir: Operation) -> str: if isinstance(ir, Assignment): return f"({encode_var_for_compare(ir.lvalue)}):=({encode_var_for_compare(ir.rvalue)})" if isinstance(ir, Index): - return f"index({ntype(ir.index_type)})" + return f"index({ntype(ir.variable_right.type)})" if isinstance(ir, Member): return "member" # .format(ntype(ir._type)) if isinstance(ir, Length): @@ -531,6 +534,7 @@ def get_proxy_implementation_var(proxy: Contract) -> Optional[Variable]: try: delegate = next(var for var in dependencies if isinstance(var, StateVariable)) except StopIteration: + # TODO: Handle cases where get_dependencies doesn't return any state variables. return delegate return delegate From 2b330a198f71015fcd67e15401675ead04e9f288 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 3 Apr 2023 14:01:44 -0500 Subject: [PATCH 041/220] Tweak how tainted variables are handled --- slither/utils/upgradeability.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 1e5b20a69..35921c843 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -129,7 +129,7 @@ def compare( new_modified_functions.append(function) new_functions.append(function) new_modified_function_vars += ( - function.state_variables_read + function.state_variables_written + function.all_state_variables_written() ) elif not function.is_constructor_variables and is_function_modified( orig_function, function @@ -137,7 +137,7 @@ def compare( new_modified_functions.append(function) modified_functions.append(function) new_modified_function_vars += ( - function.state_variables_read + function.state_variables_written + function.all_state_variables_written() ) # Find all unmodified functions that call a modified function or read/write the @@ -155,7 +155,7 @@ def compare( tainted_vars = [ var for var in set(new_modified_function_vars) - if var in function.variables_read_or_written + if var in function.all_state_variables_read() + function.all_state_variables_written() and not var.is_constant and not var.is_immutable ] @@ -166,7 +166,8 @@ def compare( for var in order_vars2: read_by = v2.get_functions_reading_from_variable(var) written_by = v2.get_functions_writing_to_variable(var) - if v1.get_state_variable_from_name(var.name) is None: + # if v1.get_state_variable_from_name(var.name) is None: + if next((v for v in v1.state_variables_ordered if v.name == var.name), None) is None: new_variables.append(var) elif any( func in read_by or func in written_by From 6451285f8f62d7fb24d79d52fa47e7039a2f2b0c Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 3 Apr 2023 16:00:03 -0500 Subject: [PATCH 042/220] create tmpdir in master xdist worker and store lockfiles there --- .github/scripts/unit_test_runner.sh | 4 +-- tests/conftest.py | 54 ++++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/.github/scripts/unit_test_runner.sh b/.github/scripts/unit_test_runner.sh index ad338f342..92afd0a4e 100644 --- a/.github/scripts/unit_test_runner.sh +++ b/.github/scripts/unit_test_runner.sh @@ -2,11 +2,11 @@ # used to pass --cov=$path and --cov-append to pytest if [ "$1" != "" ]; then - pytest "$1" tests/unit/ + pytest "$1" tests/unit/ -n auto status_code=$? python -m coverage report else - pytest tests/unit/ + pytest tests/unit/ -n auto status_code=$? fi diff --git a/tests/conftest.py b/tests/conftest.py index c6feead55..930c92195 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,17 +1,54 @@ # pylint: disable=redefined-outer-name +import os from pathlib import Path +import tempfile +import shutil from contextlib import contextmanager -from tempfile import NamedTemporaryFile import pytest from filelock import FileLock from solc_select import solc_select from slither import Slither -@pytest.fixture() -def solc_binary_path(): +def pytest_configure(config): + """Create a temporary directory for the tests to use.""" + if is_master(): + config.stash["shared_directory"] = tempfile.mkdtemp() + + +def pytest_unconfigure(config): + """Remove the temporary directory after the tests are done.""" + if is_master(): + shutil.rmtree(config.stash["shared_directory"]) + + +def pytest_configure_node(node): + """Configure each worker node with the shared directory.""" + node.workerinput["shared_directory"] = node.config.stash["shared_directory"] + + +def is_master(): + """Returns True if the current process is the master process (which does not have a worker id).""" + return os.environ.get("PYTEST_XDIST_WORKER") is None + + +@pytest.fixture +def shared_directory(request): + """Returns the shared directory for the current process.""" + if is_master(): + return request.config.stash["shared_directory"] + return request.config.workerinput["shared_directory"] + + +@pytest.fixture +def solc_binary_path(shared_directory): + """ + Returns the path to the solc binary for the given version. + If the binary is not installed, it will be installed. + """ + def inner(version): - lock = FileLock(f"{version}.lock", timeout=60) + lock = FileLock(f"{shared_directory}/{version}.lock", timeout=60) with lock: if not solc_select.artifact_path(version).exists(): print("Installing solc version", version) @@ -21,18 +58,17 @@ def solc_binary_path(): return inner -@pytest.fixture() +@pytest.fixture def slither_from_source(solc_binary_path): @contextmanager def inner(source_code: str, solc_version: str = "0.8.19"): - """Yields a Slither instance using source_code string and solc_version - - Creates a temporary file and changes the solc-version temporary to solc_version. + """Yields a Slither instance using source_code string and solc_version. + Creates a temporary file and compiles with solc_version. """ fname = "" try: - with NamedTemporaryFile(mode="w", suffix=".sol", delete=False) as f: + with tempfile.NamedTemporaryFile(mode="w", suffix=".sol", delete=False) as f: fname = f.name f.write(source_code) solc_path = solc_binary_path(solc_version) From 90d3b740b3576ba2b1f4e50520d1324b7db3e4a6 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 3 Apr 2023 23:17:22 -0500 Subject: [PATCH 043/220] use as_posix for solc binary path --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 930c92195..5ea228fd3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -53,7 +53,7 @@ def solc_binary_path(shared_directory): if not solc_select.artifact_path(version).exists(): print("Installing solc version", version) solc_select.install_artifacts([version]) - return solc_select.artifact_path(version) + return solc_select.artifact_path(version).as_posix() return inner From 92d3e4ff210bcee97c96a0f77072270ca6840113 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 3 Apr 2023 23:41:16 -0500 Subject: [PATCH 044/220] replace new uses of switch_global_version with solc_binary_path --- tests/unit/core/test_fallback_receive.py | 6 +++--- tests/unit/utils/test_upgradeability_util.py | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/unit/core/test_fallback_receive.py b/tests/unit/core/test_fallback_receive.py index 505a9dd6f..f22e2bcef 100644 --- a/tests/unit/core/test_fallback_receive.py +++ b/tests/unit/core/test_fallback_receive.py @@ -7,10 +7,10 @@ from slither.core.declarations.function import FunctionType TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" -def test_fallback_receive(): - solc_select.switch_global_version("0.6.12", always_install=True) +def test_fallback_receive(solc_binary_path): + solc_path = solc_binary_path("0.6.12") file = Path(TEST_DATA_DIR, "fallback.sol").as_posix() - slither = Slither(file) + slither = Slither(file, solc=solc_path) fake_fallback = slither.get_contract_from_name("FakeFallback")[0] real_fallback = slither.get_contract_from_name("Fallback")[0] diff --git a/tests/unit/utils/test_upgradeability_util.py b/tests/unit/utils/test_upgradeability_util.py index 7d6fb82da..87db0a911 100644 --- a/tests/unit/utils/test_upgradeability_util.py +++ b/tests/unit/utils/test_upgradeability_util.py @@ -16,10 +16,10 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" / "upgradeability_ # pylint: disable=too-many-locals -def test_upgrades_compare() -> None: - solc_select.switch_global_version("0.8.2", always_install=True) +def test_upgrades_compare(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.2") - sl = Slither(os.path.join(TEST_DATA_DIR, "TestUpgrades-0.8.2.sol")) + sl = Slither(os.path.join(TEST_DATA_DIR, "TestUpgrades-0.8.2.sol"), solc=solc_path) v1 = sl.get_contract_from_name("ContractV1")[0] v2 = sl.get_contract_from_name("ContractV2")[0] missing_vars, new_vars, tainted_vars, new_funcs, modified_funcs, tainted_funcs = compare(v1, v2) @@ -37,9 +37,9 @@ def test_upgrades_compare() -> None: ] -def test_upgrades_implementation_var() -> None: - solc_select.switch_global_version("0.8.2", always_install=True) - sl = Slither(os.path.join(TEST_DATA_DIR, "TestUpgrades-0.8.2.sol")) +def test_upgrades_implementation_var(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.2") + sl = Slither(os.path.join(TEST_DATA_DIR, "TestUpgrades-0.8.2.sol"), solc=solc_path) erc_1967_proxy = sl.get_contract_from_name("ERC1967Proxy")[0] storage_proxy = sl.get_contract_from_name("InheritedStorageProxy")[0] @@ -53,8 +53,8 @@ def test_upgrades_implementation_var() -> None: assert target == storage_proxy.get_state_variable_from_name("implementation") assert slot.slot == 1 - solc_select.switch_global_version("0.5.0", always_install=True) - sl = Slither(os.path.join(TEST_DATA_DIR, "TestUpgrades-0.5.0.sol")) + solc_path = solc_binary_path("0.5.0") + sl = Slither(os.path.join(TEST_DATA_DIR, "TestUpgrades-0.5.0.sol"), solc=solc_path) eip_1822_proxy = sl.get_contract_from_name("EIP1822Proxy")[0] # zos_proxy = sl.get_contract_from_name("ZosProxy")[0] From d1b9e8288900d6b7d75025b3f589adec0b68a045 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 3 Apr 2023 23:45:16 -0500 Subject: [PATCH 045/220] lint: unused imports --- tests/unit/core/test_fallback_receive.py | 1 - tests/unit/utils/test_upgradeability_util.py | 2 -- 2 files changed, 3 deletions(-) diff --git a/tests/unit/core/test_fallback_receive.py b/tests/unit/core/test_fallback_receive.py index f22e2bcef..9b00c5948 100644 --- a/tests/unit/core/test_fallback_receive.py +++ b/tests/unit/core/test_fallback_receive.py @@ -1,5 +1,4 @@ from pathlib import Path -from solc_select import solc_select from slither import Slither from slither.core.declarations.function import FunctionType diff --git a/tests/unit/utils/test_upgradeability_util.py b/tests/unit/utils/test_upgradeability_util.py index 87db0a911..1563d3117 100644 --- a/tests/unit/utils/test_upgradeability_util.py +++ b/tests/unit/utils/test_upgradeability_util.py @@ -1,8 +1,6 @@ import os from pathlib import Path -from solc_select import solc_select - from slither import Slither from slither.core.expressions import Literal from slither.utils.upgradeability import ( From 05f50867dc95978b5717a1bddcd1d9a6ab378820 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 4 Apr 2023 10:55:49 -0500 Subject: [PATCH 046/220] use pytest-insta to do snapshot testing for detectors --- .gitignore | 1 + setup.py | 3 +- ...4_25_storage_ABIEncoderV2_array_sol__0.txt | 18 ++ ...5_10_storage_ABIEncoderV2_array_sol__0.txt | 0 ..._5_9_storage_ABIEncoderV2_array_sol__0.txt | 18 ++ ...mit_0_4_25_arbitrary_send_erc20_sol__0.txt | 6 + ...mit_0_5_16_arbitrary_send_erc20_sol__0.txt | 6 + ...mit_0_6_11_arbitrary_send_erc20_sol__0.txt | 6 + ...rmit_0_7_6_arbitrary_send_erc20_sol__0.txt | 6 + ...rbitrary_send_erc20_inheritance_sol__0.txt | 2 + ...rmit_0_8_0_arbitrary_send_erc20_sol__0.txt | 6 + ..._25_arbitrary_send_erc20_permit_sol__0.txt | 8 + ..._16_arbitrary_send_erc20_permit_sol__0.txt | 8 + ..._11_arbitrary_send_erc20_permit_sol__0.txt | 8 + ...7_6_arbitrary_send_erc20_permit_sol__0.txt | 8 + ...8_0_arbitrary_send_erc20_permit_sol__0.txt | 8 + ...ndEth_0_4_25_arbitrary_send_eth_sol__0.txt | 8 + ...ndEth_0_5_16_arbitrary_send_eth_sol__0.txt | 8 + ...ndEth_0_6_11_arbitrary_send_eth_sol__0.txt | 8 + ...endEth_0_7_6_arbitrary_send_eth_sol__0.txt | 8 + ...rence_0_4_25_array_by_reference_sol__0.txt | 12 ++ ...rence_0_5_16_array_by_reference_sol__0.txt | 12 ++ ...rence_0_6_11_array_by_reference_sol__0.txt | 12 ++ ...erence_0_7_6_array_by_reference_sol__0.txt | 12 ++ ..._0_4_25_array_length_assignment_sol__0.txt | 9 + ..._0_5_16_array_length_assignment_sol__0.txt | 9 + ...0_4_25_inline_assembly_contract_sol__0.txt | 3 + ..._0_4_25_inline_assembly_library_sol__0.txt | 6 + ...0_5_16_inline_assembly_contract_sol__0.txt | 3 + ..._0_5_16_inline_assembly_library_sol__0.txt | 6 + ...0_6_11_inline_assembly_contract_sol__0.txt | 3 + ..._0_6_11_inline_assembly_library_sol__0.txt | 6 + ..._0_7_6_inline_assembly_contract_sol__0.txt | 3 + ...y_0_7_6_inline_assembly_library_sol__0.txt | 6 + ...ange_0_4_25_assert_state_change_sol__0.txt | 12 ++ ...ange_0_5_16_assert_state_change_sol__0.txt | 12 ++ ...ange_0_6_11_assert_state_change_sol__0.txt | 12 ++ ...hange_0_7_6_assert_state_change_sol__0.txt | 12 ++ ...tector_Backdoor_0_4_25_backdoor_sol__0.txt | 2 + ...tector_Backdoor_0_5_16_backdoor_sol__0.txt | 2 + ...tector_Backdoor_0_6_11_backdoor_sol__0.txt | 2 + ...etector_Backdoor_0_7_6_backdoor_sol__0.txt | 2 + ...etector_BadPRNG_0_4_25_bad_prng_sol__0.txt | 8 + ...etector_BadPRNG_0_5_16_bad_prng_sol__0.txt | 8 + ...etector_BadPRNG_0_6_11_bad_prng_sol__0.txt | 8 + ...detector_BadPRNG_0_7_6_bad_prng_sol__0.txt | 8 + ..._0_4_25_boolean_constant_misuse_sol__0.txt | 3 + ..._0_5_16_boolean_constant_misuse_sol__0.txt | 3 + ..._0_6_11_boolean_constant_misuse_sol__0.txt | 3 + ...e_0_7_6_boolean_constant_misuse_sol__0.txt | 3 + ..._4_25_boolean_constant_equality_sol__0.txt | 3 + ..._5_16_boolean_constant_equality_sol__0.txt | 3 + ..._6_11_boolean_constant_equality_sol__0.txt | 3 + ...0_7_6_boolean_constant_equality_sol__0.txt | 3 + ..._4_25_shadowing_builtin_symbols_sol__0.txt | 26 +++ ..._5_16_shadowing_builtin_symbols_sol__0.txt | 24 +++ ...antFunctionsAsm_0_4_25_constant_sol__0.txt | 2 + ...antFunctionsAsm_0_5_16_constant_sol__0.txt | 0 ...antFunctionsAsm_0_6_11_constant_sol__0.txt | 0 ...tantFunctionsAsm_0_7_6_constant_sol__0.txt | 0 ...tFunctionsState_0_4_25_constant_sol__0.txt | 6 + ...tFunctionsState_0_5_16_constant_sol__0.txt | 0 ...tFunctionsState_0_6_11_constant_sol__0.txt | 0 ...ntFunctionsState_0_7_6_constant_sol__0.txt | 0 ...tantPragma_0_4_25_pragma_0_4_25_sol__0.txt | 5 + ...tantPragma_0_5_16_pragma_0_5_16_sol__0.txt | 5 + ...tantPragma_0_6_11_pragma_0_6_11_sol__0.txt | 5 + ...nstantPragma_0_7_6_pragma_0_7_6_sol__0.txt | 5 + ..._0_4_25_controlled_delegatecall_sol__0.txt | 6 + ..._0_5_16_controlled_delegatecall_sol__0.txt | 6 + ..._0_6_11_controlled_delegatecall_sol__0.txt | 6 + ...l_0_7_6_controlled_delegatecall_sol__0.txt | 6 + ...tiple_costly_operations_in_loop_sol__0.txt | 12 ++ ...tiple_costly_operations_in_loop_sol__0.txt | 12 ++ ...tiple_costly_operations_in_loop_sol__0.txt | 12 ++ ...tiple_costly_operations_in_loop_sol__0.txt | 12 ++ ...nt_0_4_25_const_state_variables_sol__0.txt | 12 ++ ...nt_0_5_16_const_state_variables_sol__0.txt | 14 ++ ...nt_0_6_11_const_state_variables_sol__0.txt | 14 ++ ...ant_0_7_6_const_state_variables_sol__0.txt | 14 ++ ...ant_0_8_0_const_state_variables_sol__0.txt | 14 ++ ...le_0_4_25_immut_state_variables_sol__0.txt | 0 ...le_0_5_16_immut_state_variables_sol__0.txt | 0 ...le_0_6_11_immut_state_variables_sol__0.txt | 10 + ...ble_0_7_6_immut_state_variables_sol__0.txt | 10 + ...ble_0_8_0_immut_state_variables_sol__0.txt | 8 + ...0_8_16_HighCyclomaticComplexity_sol__0.txt | 2 + ..._0_8_16_LowCyclomaticComplexity_sol__0.txt | 0 ...tector_DeadCode_0_8_0_dead_code_sol__0.txt | 6 + ...InLoop_0_4_25_delegatecall_loop_sol__0.txt | 6 + ...InLoop_0_5_16_delegatecall_loop_sol__0.txt | 6 + ...InLoop_0_6_11_delegatecall_loop_sol__0.txt | 6 + ...lInLoop_0_7_6_delegatecall_loop_sol__0.txt | 6 + ...lInLoop_0_8_0_delegatecall_loop_sol__0.txt | 6 + ...andards_0_4_25_deprecated_calls_sol__0.txt | 6 + ...y_0_4_25_divide_before_multiply_sol__0.txt | 3 + ...y_0_5_16_divide_before_multiply_sol__0.txt | 3 + ...y_0_6_11_divide_before_multiply_sol__0.txt | 3 + ...ly_0_7_6_divide_before_multiply_sol__0.txt | 3 + ..._0_4_25_permit_domain_collision_sol__0.txt | 2 + ...rmit_domain_state_var_collision_sol__0.txt | 2 + ...permit_domain_wrong_return_type_sol__0.txt | 2 + ..._0_5_16_permit_domain_collision_sol__0.txt | 2 + ...rmit_domain_state_var_collision_sol__0.txt | 2 + ...permit_domain_wrong_return_type_sol__0.txt | 2 + ..._0_6_11_permit_domain_collision_sol__0.txt | 2 + ...rmit_domain_state_var_collision_sol__0.txt | 2 + ...permit_domain_wrong_return_type_sol__0.txt | 2 + ...n_0_7_6_permit_domain_collision_sol__0.txt | 2 + ...rmit_domain_state_var_collision_sol__0.txt | 2 + ...permit_domain_wrong_return_type_sol__0.txt | 2 + ...n_0_8_0_permit_domain_collision_sol__0.txt | 2 + ...rmit_domain_state_var_collision_sol__0.txt | 2 + ...permit_domain_wrong_return_type_sol__0.txt | 2 + ...tion_0_4_25_external_function_2_sol__0.txt | 0 ...tion_0_4_25_external_function_3_sol__0.txt | 9 + ...nction_0_4_25_external_function_sol__0.txt | 0 ...tion_0_5_16_external_function_2_sol__0.txt | 0 ...tion_0_5_16_external_function_3_sol__0.txt | 20 ++ ...nction_0_5_16_external_function_sol__0.txt | 0 ...tion_0_6_11_external_function_2_sol__0.txt | 0 ...tion_0_6_11_external_function_3_sol__0.txt | 0 ...nction_0_6_11_external_function_sol__0.txt | 0 ...ction_0_7_6_external_function_2_sol__0.txt | 0 ...ction_0_7_6_external_function_3_sol__0.txt | 0 ...unction_0_7_6_external_function_sol__0.txt | 0 ...5_function_init_state_variables_sol__0.txt | 15 ++ ...6_function_init_state_variables_sol__0.txt | 15 ++ ...1_function_init_state_variables_sol__0.txt | 15 ++ ...6_function_init_state_variables_sol__0.txt | 15 ++ ..._4_25_incorrect_erc20_interface_sol__0.txt | 12 ++ ..._5_16_incorrect_erc20_interface_sol__0.txt | 12 ++ ..._6_11_incorrect_erc20_interface_sol__0.txt | 12 ++ ...0_7_6_incorrect_erc20_interface_sol__0.txt | 12 ++ ...4_25_incorrect_erc721_interface_sol__0.txt | 20 ++ ...5_16_incorrect_erc721_interface_sol__0.txt | 20 ++ ...6_11_incorrect_erc721_interface_sol__0.txt | 20 ++ ..._7_6_incorrect_erc721_interface_sol__0.txt | 20 ++ ...tor_IncorrectSolc_0_4_25_static_sol__0.txt | 4 + ...tor_IncorrectSolc_0_5_14_static_sol__0.txt | 3 + ..._IncorrectSolc_0_5_16_dynamic_1_sol__0.txt | 4 + ..._IncorrectSolc_0_5_16_dynamic_2_sol__0.txt | 4 + ...tor_IncorrectSolc_0_5_16_static_sol__0.txt | 4 + ...tor_IncorrectSolc_0_6_10_static_sol__0.txt | 4 + ..._IncorrectSolc_0_6_11_dynamic_1_sol__0.txt | 4 + ..._IncorrectSolc_0_6_11_dynamic_2_sol__0.txt | 4 + ...tor_IncorrectSolc_0_6_11_static_sol__0.txt | 4 + ...ctor_IncorrectSolc_0_7_4_static_sol__0.txt | 4 + ...r_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt | 4 + ...r_IncorrectSolc_0_7_6_dynamic_2_sol__0.txt | 4 + ...ctor_IncorrectSolc_0_7_6_static_sol__0.txt | 4 + ...ality_0_4_25_incorrect_equality_sol__0.txt | 36 ++++ ...ality_0_5_16_incorrect_equality_sol__0.txt | 36 ++++ ...ality_0_6_11_incorrect_equality_sol__0.txt | 36 ++++ ...uality_0_7_6_incorrect_equality_sol__0.txt | 36 ++++ ...0_4_25_invalid_unary_expression_sol__0.txt | 8 + ...0_4_25_shadowing_local_variable_sol__0.txt | 20 ++ ...0_5_16_shadowing_local_variable_sol__0.txt | 23 +++ ...0_6_11_shadowing_local_variable_sol__0.txt | 21 +++ ..._0_7_6_shadowing_local_variable_sol__0.txt | 21 +++ ...LockedEther_0_4_25_locked_ether_sol__0.txt | 5 + ...LockedEther_0_5_16_locked_ether_sol__0.txt | 5 + ...LockedEther_0_6_11_locked_ether_sol__0.txt | 5 + ..._LockedEther_0_7_6_locked_ether_sol__0.txt | 5 + ...velCalls_0_4_25_low_level_calls_sol__0.txt | 3 + ...velCalls_0_5_16_low_level_calls_sol__0.txt | 3 + ...velCalls_0_6_11_low_level_calls_sol__0.txt | 3 + ...evelCalls_0_7_6_low_level_calls_sol__0.txt | 3 + ...etection_0_4_25_MappingDeletion_sol__0.txt | 6 + ...etection_0_5_16_MappingDeletion_sol__0.txt | 6 + ...etection_0_6_11_MappingDeletion_sol__0.txt | 6 + ...Detection_0_7_6_MappingDeletion_sol__0.txt | 6 + ...5_missing_events_access_control_sol__0.txt | 9 + ...6_missing_events_access_control_sol__0.txt | 9 + ...1_missing_events_access_control_sol__0.txt | 9 + ...6_missing_events_access_control_sol__0.txt | 9 + ..._4_25_missing_events_arithmetic_sol__0.txt | 6 + ..._5_16_missing_events_arithmetic_sol__0.txt | 6 + ..._6_11_missing_events_arithmetic_sol__0.txt | 6 + ...0_7_6_missing_events_arithmetic_sol__0.txt | 6 + ..._0_4_25_unimplemented_interface_sol__0.txt | 2 + ..._0_5_16_unimplemented_interface_sol__0.txt | 2 + ..._0_6_11_unimplemented_interface_sol__0.txt | 2 + ...e_0_7_6_unimplemented_interface_sol__0.txt | 2 + ...missing_zero_address_validation_sol__0.txt | 16 ++ ...missing_zero_address_validation_sol__0.txt | 16 ++ ...missing_zero_address_validation_sol__0.txt | 16 ++ ...missing_zero_address_validation_sol__0.txt | 16 ++ ...tection_0_4_25_modifier_default_sol__0.txt | 3 + ...tection_0_5_16_modifier_default_sol__0.txt | 3 + ...tection_0_6_11_modifier_default_sol__0.txt | 3 + ...etection_0_7_6_modifier_default_sol__0.txt | 3 + ...lueInLoop_0_4_25_msg_value_loop_sol__0.txt | 6 + ...lueInLoop_0_5_16_msg_value_loop_sol__0.txt | 6 + ...lueInLoop_0_6_11_msg_value_loop_sol__0.txt | 6 + ...alueInLoop_0_7_6_msg_value_loop_sol__0.txt | 6 + ...alueInLoop_0_8_0_msg_value_loop_sol__0.txt | 6 + ...p_0_4_25_multiple_calls_in_loop_sol__0.txt | 8 + ...p_0_5_16_multiple_calls_in_loop_sol__0.txt | 8 + ...p_0_6_11_multiple_calls_in_loop_sol__0.txt | 8 + ...op_0_7_6_multiple_calls_in_loop_sol__0.txt | 8 + ...22_multiple_constructor_schemes_sol__0.txt | 4 + ...ention_0_4_25_naming_convention_sol__0.txt | 32 ++++ ...no_warning_for_public_constants_sol__0.txt | 0 ...ention_0_5_16_naming_convention_sol__0.txt | 32 ++++ ...no_warning_for_public_constants_sol__0.txt | 0 ...ention_0_6_11_naming_convention_sol__0.txt | 32 ++++ ...no_warning_for_public_constants_sol__0.txt | 0 ...vention_0_7_6_naming_convention_sol__0.txt | 32 ++++ ...no_warning_for_public_constants_sol__0.txt | 0 ...4_25_predeclaration_usage_local_sol__0.txt | 10 + ...rotectedVariables_0_8_2_comment_sol__0.txt | 4 + ...d_0_4_25_public_mappings_nested_sol__0.txt | 2 + ...nts_0_4_25_redundant_statements_sol__0.txt | 12 ++ ...nts_0_5_16_redundant_statements_sol__0.txt | 12 ++ ...nts_0_6_11_redundant_statements_sol__0.txt | 12 ++ ...ents_0_7_6_redundant_statements_sol__0.txt | 12 ++ ...Benign_0_4_25_reentrancy_benign_sol__0.txt | 50 +++++ ...Benign_0_5_16_reentrancy_benign_sol__0.txt | 50 +++++ ...Benign_0_6_11_reentrancy_benign_sol__0.txt | 50 +++++ ...yBenign_0_7_6_reentrancy_benign_sol__0.txt | 50 +++++ ...tector_ReentrancyEth_0_4_25_DAO_sol__0.txt | 72 ++++++++ ...yEth_0_4_25_reentrancy_indirect_sol__0.txt | 15 ++ ...ReentrancyEth_0_4_25_reentrancy_sol__0.txt | 32 ++++ ...yEth_0_5_16_reentrancy_indirect_sol__0.txt | 15 ++ ...ReentrancyEth_0_5_16_reentrancy_sol__0.txt | 28 +++ ...yEth_0_6_11_reentrancy_indirect_sol__0.txt | 15 ++ ...ReentrancyEth_0_6_11_reentrancy_sol__0.txt | 28 +++ ...cyEth_0_7_6_reentrancy_indirect_sol__0.txt | 15 ++ ..._ReentrancyEth_0_7_6_reentrancy_sol__0.txt | 28 +++ ...10_reentrancy_filtered_comments_sol__0.txt | 9 + ...0_reentrancy_with_non_reentrant_sol__0.txt | 32 ++++ ...yEvent_0_5_16_reentrancy_events_sol__0.txt | 6 + ...yEvent_0_6_11_reentrancy_events_sol__0.txt | 6 + ...cyEvent_0_7_6_reentrancy_events_sol__0.txt | 6 + ...ncyReadBeforeWritten_0_4_25_DAO_sol__0.txt | 171 ++++++++++++++++++ ...Written_0_4_25_reentrancy_write_sol__0.txt | 25 +++ ...0_5_16_no_reentrancy_staticcall_sol__0.txt | 0 ...Written_0_5_16_reentrancy_write_sol__0.txt | 25 +++ ...0_6_11_no_reentrancy_staticcall_sol__0.txt | 0 ...Written_0_6_11_reentrancy_write_sol__0.txt | 25 +++ ..._0_7_6_no_reentrancy_staticcall_sol__0.txt | 0 ...eWritten_0_7_6_reentrancy_write_sol__0.txt | 25 +++ ...ReadBeforeWritten_0_8_2_comment_sol__0.txt | 0 ..._0_4_21_reused_base_constructor_sol__0.txt | 24 +++ ..._0_4_25_reused_base_constructor_sol__0.txt | 35 ++++ ...e_0_4_25_right_to_left_override_sol__0.txt | 3 + ...e_0_5_16_right_to_left_override_sol__0.txt | 3 + ...e_0_6_11_right_to_left_override_sol__0.txt | 3 + ..._8_0_unicode_direction_override_sol__0.txt | 9 + ...ction_0_4_25_shadowing_abstract_sol__0.txt | 3 + ...ction_0_5_16_shadowing_abstract_sol__0.txt | 3 + ...ction_0_7_5_public_gap_variable_sol__0.txt | 3 + ..._0_7_5_shadowing_state_variable_sol__0.txt | 0 ...up_0_4_25_shift_parameter_mixup_sol__0.txt | 0 ...up_0_5_16_shift_parameter_mixup_sol__0.txt | 0 ...up_0_6_11_shift_parameter_mixup_sol__0.txt | 2 + ...xup_0_7_6_shift_parameter_mixup_sol__0.txt | 2 + ...ection_0_4_25_similar_variables_sol__0.txt | 2 + ...ection_0_5_16_similar_variables_sol__0.txt | 2 + ...ection_0_6_11_similar_variables_sol__0.txt | 2 + ...tection_0_7_6_similar_variables_sol__0.txt | 2 + ...0_4_25_shadowing_state_variable_sol__0.txt | 3 + ...0_5_16_shadowing_state_variable_sol__0.txt | 3 + ...0_6_11_shadowing_state_variable_sol__0.txt | 0 ...owing_0_7_5_public_gap_variable_sol__0.txt | 3 + ..._0_7_5_shadowing_state_variable_sol__0.txt | 0 ..._0_7_6_shadowing_state_variable_sol__0.txt | 0 ...10_storage_signed_integer_array_sol__0.txt | 0 ...16_storage_signed_integer_array_sol__0.txt | 0 ...tector_Suicidal_0_4_25_suicidal_sol__0.txt | 2 + ...tector_Suicidal_0_5_16_suicidal_sol__0.txt | 2 + ...tector_Suicidal_0_6_11_suicidal_sol__0.txt | 2 + ...etector_Suicidal_0_7_6_suicidal_sol__0.txt | 2 + ...ctor_Timestamp_0_4_25_timestamp_sol__0.txt | 12 ++ ...ctor_Timestamp_0_5_16_timestamp_sol__0.txt | 12 ++ ...ctor_Timestamp_0_6_11_timestamp_sol__0.txt | 12 ++ ...ector_Timestamp_0_7_6_timestamp_sol__0.txt | 12 ++ ...nyDigits_0_4_25_too_many_digits_sol__0.txt | 15 ++ ...nyDigits_0_5_16_too_many_digits_sol__0.txt | 15 ++ ...nyDigits_0_6_11_too_many_digits_sol__0.txt | 15 ++ ...anyDigits_0_7_6_too_many_digits_sol__0.txt | 15 ++ ...ector_TxOrigin_0_4_25_tx_origin_sol__0.txt | 4 + ...ector_TxOrigin_0_5_16_tx_origin_sol__0.txt | 4 + ...ector_TxOrigin_0_6_11_tx_origin_sol__0.txt | 4 + ...tector_TxOrigin_0_7_6_tx_origin_sol__0.txt | 4 + ...ogy_0_4_25_type_based_tautology_sol__0.txt | 6 + ...ogy_0_5_16_type_based_tautology_sol__0.txt | 6 + ...ogy_0_6_11_type_based_tautology_sol__0.txt | 6 + ...logy_0_7_6_type_based_tautology_sol__0.txt | 6 + ...Level_0_4_25_unchecked_lowlevel_sol__0.txt | 2 + ...Level_0_5_16_unchecked_lowlevel_sol__0.txt | 2 + ...Level_0_6_11_unchecked_lowlevel_sol__0.txt | 2 + ...wLevel_0_7_6_unchecked_lowlevel_sol__0.txt | 2 + ...eckedSend_0_4_25_unchecked_send_sol__0.txt | 2 + ...eckedSend_0_5_16_unchecked_send_sol__0.txt | 2 + ...eckedSend_0_6_11_unchecked_send_sol__0.txt | 2 + ...heckedSend_0_7_6_unchecked_send_sol__0.txt | 2 + ...r_0_7_6_unused_return_transfers_sol__0.txt | 4 + ...nDetection_0_4_25_unimplemented_sol__0.txt | 13 ++ ...0_5_16_unimplemented_interfaces_sol__0.txt | 0 ...nDetection_0_5_16_unimplemented_sol__0.txt | 7 + ...0_6_11_unimplemented_interfaces_sol__0.txt | 0 ...nDetection_0_6_11_unimplemented_sol__0.txt | 10 + ..._0_7_6_unimplemented_interfaces_sol__0.txt | 0 ...onDetection_0_7_6_unimplemented_sol__0.txt | 10 + ...Parameters_0_4_25_erc20_indexed_sol__0.txt | 8 + ...Parameters_0_5_16_erc20_indexed_sol__0.txt | 8 + ...Parameters_0_6_11_erc20_indexed_sol__0.txt | 8 + ...tParameters_0_7_6_erc20_indexed_sol__0.txt | 8 + ...alized_function_ptr_constructor_sol__0.txt | 12 ++ ...alized_function_ptr_constructor_sol__0.txt | 0 ...alized_function_ptr_constructor_sol__0.txt | 12 ++ ...25_uninitialized_local_variable_sol__0.txt | 2 + ...16_uninitialized_local_variable_sol__0.txt | 2 + ...11_uninitialized_local_variable_sol__0.txt | 2 + ..._6_uninitialized_local_variable_sol__0.txt | 2 + ...sDetection_0_4_25_uninitialized_sol__0.txt | 12 ++ ...sDetection_0_5_16_uninitialized_sol__0.txt | 12 ++ ...sDetection_0_6_11_uninitialized_sol__0.txt | 12 ++ ...rsDetection_0_7_6_uninitialized_sol__0.txt | 12 ++ ...5_uninitialized_storage_pointer_sol__0.txt | 2 + ...9_uninitialized_storage_pointer_sol__0.txt | 2 + ...otectedUpgradeable_0_4_25_Buggy_sol__0.txt | 1 + ...otectedUpgradeable_0_4_25_Fixed_sol__0.txt | 0 ...dUpgradeable_0_4_25_whitelisted_sol__0.txt | 0 ...otectedUpgradeable_0_5_16_Buggy_sol__0.txt | 1 + ...otectedUpgradeable_0_5_16_Fixed_sol__0.txt | 0 ...dUpgradeable_0_5_16_whitelisted_sol__0.txt | 0 ...otectedUpgradeable_0_6_11_Buggy_sol__0.txt | 1 + ...otectedUpgradeable_0_6_11_Fixed_sol__0.txt | 0 ...dUpgradeable_0_6_11_whitelisted_sol__0.txt | 0 ...rotectedUpgradeable_0_7_6_Buggy_sol__0.txt | 1 + ...rotectedUpgradeable_0_7_6_Fixed_sol__0.txt | 0 ...edUpgradeable_0_7_6_whitelisted_sol__0.txt | 0 ...otectedUpgradeable_0_8_15_Buggy_sol__0.txt | 1 + ...otectedUpgradeable_0_8_15_Fixed_sol__0.txt | 0 ...dUpgradeable_0_8_15_whitelisted_sol__0.txt | 0 ...turnValues_0_4_25_unused_return_sol__0.txt | 4 + ...turnValues_0_5_16_unused_return_sol__0.txt | 4 + ...turnValues_0_6_11_unused_return_sol__0.txt | 4 + ...eturnValues_0_7_6_unused_return_sol__0.txt | 4 + ...edStateVars_0_4_25_unused_state_sol__0.txt | 8 + ...edStateVars_0_5_16_unused_state_sol__0.txt | 8 + ...edStateVars_0_6_11_unused_state_sol__0.txt | 8 + ...sedStateVars_0_7_6_unused_state_sol__0.txt | 8 + ...This_0_4_25_var_read_using_this_sol__0.txt | 0 ...This_0_5_16_var_read_using_this_sol__0.txt | 8 + ...This_0_6_11_var_read_using_this_sol__0.txt | 8 + ...gThis_0_7_6_var_read_using_this_sol__0.txt | 8 + ...This_0_8_15_var_read_using_this_sol__0.txt | 8 + ...VoidConstructor_0_4_25_void_cst_sol__0.txt | 3 + ...VoidConstructor_0_5_16_void_cst_sol__0.txt | 3 + ...VoidConstructor_0_6_11_void_cst_sol__0.txt | 3 + ..._VoidConstructor_0_7_6_void_cst_sol__0.txt | 3 + ...erWrite_0_8_0_write_after_write_sol__0.txt | 12 ++ tests/e2e/detectors/test_detectors.py | 9 +- 357 files changed, 2986 insertions(+), 2 deletions(-) create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_4_25_storage_ABIEncoderV2_array_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_5_10_storage_ABIEncoderV2_array_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_5_9_storage_ABIEncoderV2_array_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_4_25_arbitrary_send_erc20_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_5_16_arbitrary_send_erc20_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_6_11_arbitrary_send_erc20_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_7_6_arbitrary_send_erc20_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_8_0_arbitrary_send_erc20_inheritance_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_8_0_arbitrary_send_erc20_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_4_25_arbitrary_send_erc20_permit_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_5_16_arbitrary_send_erc20_permit_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_6_11_arbitrary_send_erc20_permit_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_7_6_arbitrary_send_erc20_permit_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_8_0_arbitrary_send_erc20_permit_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_4_25_arbitrary_send_eth_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_5_16_arbitrary_send_eth_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_6_11_arbitrary_send_eth_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_7_6_arbitrary_send_eth_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArrayLengthAssignment_0_4_25_array_length_assignment_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ArrayLengthAssignment_0_5_16_array_length_assignment_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_4_25_inline_assembly_contract_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_4_25_inline_assembly_library_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_5_16_inline_assembly_contract_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_5_16_inline_assembly_library_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_6_11_inline_assembly_contract_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_6_11_inline_assembly_library_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_7_6_inline_assembly_contract_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_7_6_inline_assembly_library_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_4_25_assert_state_change_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_5_16_assert_state_change_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_6_11_assert_state_change_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_7_6_assert_state_change_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_4_25_backdoor_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_5_16_backdoor_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_6_11_backdoor_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_7_6_backdoor_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_4_25_bad_prng_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_5_16_bad_prng_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_6_11_bad_prng_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_7_6_bad_prng_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_4_25_boolean_constant_misuse_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_5_16_boolean_constant_misuse_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_6_11_boolean_constant_misuse_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_7_6_boolean_constant_misuse_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_4_25_boolean_constant_equality_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_5_16_boolean_constant_equality_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_6_11_boolean_constant_equality_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_7_6_boolean_constant_equality_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_4_25_shadowing_builtin_symbols_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_5_16_shadowing_builtin_symbols_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_4_25_constant_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_5_16_constant_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_6_11_constant_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_7_6_constant_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_4_25_constant_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_5_16_constant_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_6_11_constant_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_7_6_constant_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_4_25_pragma_0_4_25_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_5_16_pragma_0_5_16_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_6_11_pragma_0_6_11_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_7_6_pragma_0_7_6_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_4_25_controlled_delegatecall_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_5_16_controlled_delegatecall_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_6_11_controlled_delegatecall_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_7_6_controlled_delegatecall_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_4_25_multiple_costly_operations_in_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_5_16_multiple_costly_operations_in_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_6_11_multiple_costly_operations_in_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_7_6_multiple_costly_operations_in_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_4_25_const_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_5_16_const_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_6_11_const_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_7_6_const_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_8_0_const_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_4_25_immut_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_5_16_immut_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_6_11_immut_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_7_6_immut_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_8_0_immut_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CyclomaticComplexity_0_8_16_HighCyclomaticComplexity_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CyclomaticComplexity_0_8_16_LowCyclomaticComplexity_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DeadCode_0_8_0_dead_code_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_4_25_delegatecall_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_5_16_delegatecall_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_6_11_delegatecall_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_7_6_delegatecall_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_8_0_delegatecall_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DeprecatedStandards_0_4_25_deprecated_calls_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_4_25_divide_before_multiply_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_5_16_divide_before_multiply_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_6_11_divide_before_multiply_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_7_6_divide_before_multiply_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_collision_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_state_var_collision_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_wrong_return_type_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_collision_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_state_var_collision_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_wrong_return_type_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_collision_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_state_var_collision_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_wrong_return_type_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_collision_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_state_var_collision_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_wrong_return_type_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_collision_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_state_var_collision_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_wrong_return_type_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_4_25_external_function_2_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_4_25_external_function_3_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_4_25_external_function_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_5_16_external_function_2_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_5_16_external_function_3_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_5_16_external_function_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_6_11_external_function_2_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_6_11_external_function_3_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_6_11_external_function_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_7_6_external_function_2_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_7_6_external_function_3_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_7_6_external_function_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_4_25_function_init_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_5_16_function_init_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_6_11_function_init_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_7_6_function_init_state_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_4_25_incorrect_erc20_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_5_16_incorrect_erc20_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_6_11_incorrect_erc20_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_7_6_incorrect_erc20_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_4_25_incorrect_erc721_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_5_16_incorrect_erc721_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_6_11_incorrect_erc721_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_7_6_incorrect_erc721_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_2_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_4_25_incorrect_equality_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_5_16_incorrect_equality_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_6_11_incorrect_equality_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_7_6_incorrect_equality_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectUnaryExpressionDetection_0_4_25_invalid_unary_expression_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_4_25_shadowing_local_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_5_16_shadowing_local_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_6_11_shadowing_local_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_7_6_shadowing_local_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_4_25_locked_ether_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_5_16_locked_ether_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_6_11_locked_ether_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_7_6_locked_ether_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_4_25_low_level_calls_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_5_16_low_level_calls_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_6_11_low_level_calls_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_7_6_low_level_calls_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_4_25_MappingDeletion_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_5_16_MappingDeletion_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_6_11_MappingDeletion_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_7_6_MappingDeletion_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_4_25_missing_events_access_control_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_5_16_missing_events_access_control_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_6_11_missing_events_access_control_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_7_6_missing_events_access_control_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_4_25_missing_events_arithmetic_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_5_16_missing_events_arithmetic_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_6_11_missing_events_arithmetic_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_7_6_missing_events_arithmetic_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_4_25_unimplemented_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_5_16_unimplemented_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_6_11_unimplemented_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_7_6_unimplemented_interface_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_4_25_missing_zero_address_validation_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_5_16_missing_zero_address_validation_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_6_11_missing_zero_address_validation_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_7_6_missing_zero_address_validation_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_4_25_modifier_default_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_5_16_modifier_default_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_6_11_modifier_default_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_7_6_modifier_default_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_4_25_msg_value_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_5_16_msg_value_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_6_11_msg_value_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_7_6_msg_value_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_8_0_msg_value_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_4_25_multiple_calls_in_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_5_16_multiple_calls_in_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_6_11_multiple_calls_in_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_7_6_multiple_calls_in_loop_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_MultipleConstructorSchemes_0_4_22_multiple_constructor_schemes_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_naming_convention_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_no_warning_for_public_constants_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_naming_convention_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_no_warning_for_public_constants_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_naming_convention_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_no_warning_for_public_constants_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_naming_convention_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_no_warning_for_public_constants_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_PredeclarationUsageLocal_0_4_25_predeclaration_usage_local_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ProtectedVariables_0_8_2_comment_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_PublicMappingNested_0_4_25_public_mappings_nested_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_4_25_redundant_statements_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_5_16_redundant_statements_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_6_11_redundant_statements_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_7_6_redundant_statements_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_4_25_reentrancy_benign_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_5_16_reentrancy_benign_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_6_11_reentrancy_benign_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_7_6_reentrancy_benign_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_DAO_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_reentrancy_indirect_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_reentrancy_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_5_16_reentrancy_indirect_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_5_16_reentrancy_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_6_11_reentrancy_indirect_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_6_11_reentrancy_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_7_6_reentrancy_indirect_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_7_6_reentrancy_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_8_10_reentrancy_filtered_comments_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_8_10_reentrancy_with_non_reentrant_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_5_16_reentrancy_events_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_6_11_reentrancy_events_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_7_6_reentrancy_events_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_4_25_DAO_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_4_25_reentrancy_write_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_5_16_no_reentrancy_staticcall_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_5_16_reentrancy_write_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_6_11_no_reentrancy_staticcall_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_6_11_reentrancy_write_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_7_6_no_reentrancy_staticcall_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_7_6_reentrancy_write_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_8_2_comment_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReusedBaseConstructor_0_4_21_reused_base_constructor_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ReusedBaseConstructor_0_4_25_reused_base_constructor_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_4_25_right_to_left_override_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_5_16_right_to_left_override_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_6_11_right_to_left_override_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_8_0_unicode_direction_override_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_4_25_shadowing_abstract_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_5_16_shadowing_abstract_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_7_5_public_gap_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_7_5_shadowing_state_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_4_25_shift_parameter_mixup_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_5_16_shift_parameter_mixup_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_6_11_shift_parameter_mixup_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_7_6_shift_parameter_mixup_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_4_25_similar_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_5_16_similar_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_6_11_similar_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_7_6_similar_variables_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_4_25_shadowing_state_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_5_16_shadowing_state_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_6_11_shadowing_state_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_7_5_public_gap_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_7_5_shadowing_state_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_7_6_shadowing_state_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_StorageSignedIntegerArray_0_5_10_storage_signed_integer_array_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_StorageSignedIntegerArray_0_5_16_storage_signed_integer_array_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_4_25_suicidal_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_5_16_suicidal_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_6_11_suicidal_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_7_6_suicidal_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_4_25_timestamp_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_5_16_timestamp_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_6_11_timestamp_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_7_6_timestamp_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_4_25_too_many_digits_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_5_16_too_many_digits_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_6_11_too_many_digits_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_7_6_too_many_digits_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_4_25_tx_origin_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_5_16_tx_origin_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_6_11_tx_origin_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_7_6_tx_origin_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_4_25_type_based_tautology_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_5_16_type_based_tautology_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_6_11_type_based_tautology_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_7_6_type_based_tautology_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_4_25_unchecked_lowlevel_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_5_16_unchecked_lowlevel_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_6_11_unchecked_lowlevel_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_7_6_unchecked_lowlevel_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_4_25_unchecked_send_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_5_16_unchecked_send_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_6_11_unchecked_send_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_7_6_unchecked_send_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UncheckedTransfer_0_7_6_unused_return_transfers_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_4_25_unimplemented_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_5_16_unimplemented_interfaces_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_5_16_unimplemented_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_6_11_unimplemented_interfaces_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_6_11_unimplemented_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_7_6_unimplemented_interfaces_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_7_6_unimplemented_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_4_25_erc20_indexed_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_5_16_erc20_indexed_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_6_11_erc20_indexed_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_7_6_erc20_indexed_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_4_25_uninitialized_function_ptr_constructor_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_5_16_uninitialized_function_ptr_constructor_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_5_8_uninitialized_function_ptr_constructor_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_4_25_uninitialized_local_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_5_16_uninitialized_local_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_6_11_uninitialized_local_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_7_6_uninitialized_local_variable_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_4_25_uninitialized_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_5_16_uninitialized_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_6_11_uninitialized_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_7_6_uninitialized_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedStorageVars_0_4_25_uninitialized_storage_pointer_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UninitializedStorageVars_0_8_19_uninitialized_storage_pointer_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_4_25_Buggy_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_4_25_Fixed_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_4_25_whitelisted_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_5_16_Buggy_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_5_16_Fixed_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_5_16_whitelisted_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_6_11_Buggy_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_6_11_Fixed_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_6_11_whitelisted_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_7_6_Buggy_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_7_6_Fixed_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_7_6_whitelisted_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_8_15_Buggy_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_8_15_Fixed_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_8_15_whitelisted_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_4_25_unused_return_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_5_16_unused_return_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_6_11_unused_return_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_7_6_unused_return_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_4_25_unused_state_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_5_16_unused_state_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_6_11_unused_state_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_7_6_unused_state_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_4_25_var_read_using_this_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_5_16_var_read_using_this_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_6_11_var_read_using_this_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_7_6_var_read_using_this_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_8_15_var_read_using_this_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_4_25_void_cst_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_5_16_void_cst_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_6_11_void_cst_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_7_6_void_cst_sol__0.txt create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_WriteAfterWrite_0_8_0_write_after_write_sol__0.txt diff --git a/.gitignore b/.gitignore index 95fc5a7bf..4441c03d1 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ htmlcov/ .coverage .coverage.* .cache +.pytest_cache nosetests.xml coverage.xml *.cover diff --git a/setup.py b/setup.py index 59fd81ab5..27213481a 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,6 @@ setup( # "crytic-compile>=0.3.1,<0.4.0", "crytic-compile@git+https://github.com/crytic/crytic-compile.git@windows-rel-path#egg=crytic-compile", "web3>=6.0.0", - "solc-select@git+https://github.com/crytic/solc-select.git@query-artifact-path#egg=solc-select", ], extras_require={ "lint": [ @@ -33,6 +32,8 @@ setup( "numpy", "coverage[toml]", "filelock", + "pytest-insta", + "solc-select@git+https://github.com/crytic/solc-select.git@query-artifact-path#egg=solc-select", ], "doc": [ "pdoc", diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_4_25_storage_ABIEncoderV2_array_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_4_25_storage_ABIEncoderV2_array_sol__0.txt new file mode 100644 index 000000000..35872cfcb --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_4_25_storage_ABIEncoderV2_array_sol__0.txt @@ -0,0 +1,18 @@ +Function A.bad3() (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#39-41) trigger an abi encoding bug: + - b = abi.encode(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#40) + +Function A.bad0() (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#21-23) trigger an abi encoding bug: + - this.bad0_external(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#22) + +Function A.bad4() (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#44-46) trigger an abi encoding bug: + - event1_bad(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#45) + +Function A.bad2() (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#34-36) trigger an abi encoding bug: + - b = abi.encode(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#35) + +Function A.bad1(A.S[3]) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#29-31) trigger an abi encoding bug: + - this.bad1_external(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#30) + +Function A.bad5() (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#49-51) trigger an abi encoding bug: + - event2_bad(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#50) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_5_10_storage_ABIEncoderV2_array_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_5_10_storage_ABIEncoderV2_array_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_5_9_storage_ABIEncoderV2_array_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_5_9_storage_ABIEncoderV2_array_sol__0.txt new file mode 100644 index 000000000..c63496458 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ABIEncoderV2Array_0_5_9_storage_ABIEncoderV2_array_sol__0.txt @@ -0,0 +1,18 @@ +Function A.bad5() (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#49-51) trigger an abi encoding bug: + - event2_bad(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#50) + +Function A.bad0() (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#21-23) trigger an abi encoding bug: + - this.bad0_external(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#22) + +Function A.bad4() (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#44-46) trigger an abi encoding bug: + - event1_bad(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#45) + +Function A.bad2() (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#34-36) trigger an abi encoding bug: + - b = abi.encode(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#35) + +Function A.bad1(A.S[3]) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#29-31) trigger an abi encoding bug: + - this.bad1_external(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#30) + +Function A.bad3() (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#39-41) trigger an abi encoding bug: + - b = abi.encode(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#40) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_4_25_arbitrary_send_erc20_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_4_25_arbitrary_send_erc20_sol__0.txt new file mode 100644 index 000000000..671bb5a8e --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_4_25_arbitrary_send_erc20_sol__0.txt @@ -0,0 +1,6 @@ +C.bad4(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#65-67) uses arbitrary from in transferFrom: SafeERC20.safeTransferFrom(erc20,from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#66) + +C.bad1(address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#35-37) uses arbitrary from in transferFrom: erc20.transferFrom(notsend,to,am) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#36) + +C.bad3(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#57-59) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#58) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_5_16_arbitrary_send_erc20_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_5_16_arbitrary_send_erc20_sol__0.txt new file mode 100644 index 000000000..3a51fec76 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_5_16_arbitrary_send_erc20_sol__0.txt @@ -0,0 +1,6 @@ +C.bad4(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#65-67) uses arbitrary from in transferFrom: SafeERC20.safeTransferFrom(erc20,from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#66) + +C.bad3(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#57-59) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#58) + +C.bad1(address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#35-37) uses arbitrary from in transferFrom: erc20.transferFrom(notsend,to,am) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#36) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_6_11_arbitrary_send_erc20_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_6_11_arbitrary_send_erc20_sol__0.txt new file mode 100644 index 000000000..b6fcace17 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_6_11_arbitrary_send_erc20_sol__0.txt @@ -0,0 +1,6 @@ +C.bad1(address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#35-37) uses arbitrary from in transferFrom: erc20.transferFrom(notsend,to,am) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#36) + +C.bad3(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#57-59) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#58) + +C.bad4(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#65-67) uses arbitrary from in transferFrom: SafeERC20.safeTransferFrom(erc20,from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#66) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_7_6_arbitrary_send_erc20_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_7_6_arbitrary_send_erc20_sol__0.txt new file mode 100644 index 000000000..20cab07cc --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_7_6_arbitrary_send_erc20_sol__0.txt @@ -0,0 +1,6 @@ +C.bad4(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#65-67) uses arbitrary from in transferFrom: SafeERC20.safeTransferFrom(erc20,from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#66) + +C.bad3(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#57-59) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#58) + +C.bad1(address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#35-37) uses arbitrary from in transferFrom: erc20.transferFrom(notsend,to,am) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#36) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_8_0_arbitrary_send_erc20_inheritance_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_8_0_arbitrary_send_erc20_inheritance_sol__0.txt new file mode 100644 index 000000000..d6cceff72 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_8_0_arbitrary_send_erc20_inheritance_sol__0.txt @@ -0,0 +1,2 @@ +T.bad(address) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol#11-13) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,address(0x1),90) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol#12) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_8_0_arbitrary_send_erc20_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_8_0_arbitrary_send_erc20_sol__0.txt new file mode 100644 index 000000000..33f681067 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20NoPermit_0_8_0_arbitrary_send_erc20_sol__0.txt @@ -0,0 +1,6 @@ +C.bad1(address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#35-37) uses arbitrary from in transferFrom: erc20.transferFrom(notsend,to,am) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#36) + +C.bad3(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#57-59) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#58) + +C.bad4(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#65-67) uses arbitrary from in transferFrom: SafeERC20.safeTransferFrom(erc20,from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#66) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_4_25_arbitrary_send_erc20_permit_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_4_25_arbitrary_send_erc20_permit_sol__0.txt new file mode 100644 index 000000000..c009ae408 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_4_25_arbitrary_send_erc20_permit_sol__0.txt @@ -0,0 +1,8 @@ +C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#42-45) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#44) + +C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#47-50) uses arbitrary from in transferFrom in combination with permit: erc20.safeTransferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#49) + +C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#52-55) uses arbitrary from in transferFrom in combination with permit: SafeERC20.safeTransferFrom(erc20,from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#54) + +C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#32-35) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#34) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_5_16_arbitrary_send_erc20_permit_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_5_16_arbitrary_send_erc20_permit_sol__0.txt new file mode 100644 index 000000000..a5376e999 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_5_16_arbitrary_send_erc20_permit_sol__0.txt @@ -0,0 +1,8 @@ +C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#42-45) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#44) + +C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#52-55) uses arbitrary from in transferFrom in combination with permit: SafeERC20.safeTransferFrom(erc20,from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#54) + +C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#47-50) uses arbitrary from in transferFrom in combination with permit: erc20.safeTransferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#49) + +C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#32-35) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#34) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_6_11_arbitrary_send_erc20_permit_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_6_11_arbitrary_send_erc20_permit_sol__0.txt new file mode 100644 index 000000000..6c81a434b --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_6_11_arbitrary_send_erc20_permit_sol__0.txt @@ -0,0 +1,8 @@ +C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#47-50) uses arbitrary from in transferFrom in combination with permit: erc20.safeTransferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#49) + +C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#52-55) uses arbitrary from in transferFrom in combination with permit: SafeERC20.safeTransferFrom(erc20,from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#54) + +C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#42-45) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#44) + +C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#32-35) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#34) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_7_6_arbitrary_send_erc20_permit_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_7_6_arbitrary_send_erc20_permit_sol__0.txt new file mode 100644 index 000000000..8cf69612d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_7_6_arbitrary_send_erc20_permit_sol__0.txt @@ -0,0 +1,8 @@ +C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#42-45) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#44) + +C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#32-35) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#34) + +C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#52-55) uses arbitrary from in transferFrom in combination with permit: SafeERC20.safeTransferFrom(erc20,from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#54) + +C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#47-50) uses arbitrary from in transferFrom in combination with permit: erc20.safeTransferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#49) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_8_0_arbitrary_send_erc20_permit_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_8_0_arbitrary_send_erc20_permit_sol__0.txt new file mode 100644 index 000000000..7921c41b0 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendErc20Permit_0_8_0_arbitrary_send_erc20_permit_sol__0.txt @@ -0,0 +1,8 @@ +C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#47-50) uses arbitrary from in transferFrom in combination with permit: erc20.safeTransferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#49) + +C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#52-55) uses arbitrary from in transferFrom in combination with permit: SafeERC20.safeTransferFrom(erc20,from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#54) + +C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#42-45) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#44) + +C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#32-35) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#34) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_4_25_arbitrary_send_eth_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_4_25_arbitrary_send_eth_sol__0.txt new file mode 100644 index 000000000..1b16e0df6 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_4_25_arbitrary_send_eth_sol__0.txt @@ -0,0 +1,8 @@ +Test.indirect() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#19-21) sends eth to arbitrary user + Dangerous calls: + - destination.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#20) + +Test.direct() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#11-13) sends eth to arbitrary user + Dangerous calls: + - msg.sender.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#12) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_5_16_arbitrary_send_eth_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_5_16_arbitrary_send_eth_sol__0.txt new file mode 100644 index 000000000..61b5acab8 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_5_16_arbitrary_send_eth_sol__0.txt @@ -0,0 +1,8 @@ +Test.direct() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#11-13) sends eth to arbitrary user + Dangerous calls: + - msg.sender.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#12) + +Test.indirect() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#19-21) sends eth to arbitrary user + Dangerous calls: + - destination.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#20) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_6_11_arbitrary_send_eth_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_6_11_arbitrary_send_eth_sol__0.txt new file mode 100644 index 000000000..56ccf3cd3 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_6_11_arbitrary_send_eth_sol__0.txt @@ -0,0 +1,8 @@ +Test.indirect() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#19-21) sends eth to arbitrary user + Dangerous calls: + - destination.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#20) + +Test.direct() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#11-13) sends eth to arbitrary user + Dangerous calls: + - msg.sender.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#12) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_7_6_arbitrary_send_eth_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_7_6_arbitrary_send_eth_sol__0.txt new file mode 100644 index 000000000..3d4a4f037 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArbitrarySendEth_0_7_6_arbitrary_send_eth_sol__0.txt @@ -0,0 +1,8 @@ +Test.direct() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#11-13) sends eth to arbitrary user + Dangerous calls: + - msg.sender.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#12) + +Test.indirect() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#19-21) sends eth to arbitrary user + Dangerous calls: + - destination.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#20) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt new file mode 100644 index 000000000..f056bea10 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt @@ -0,0 +1,12 @@ +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value + +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value + +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value + +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value + +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value + +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt new file mode 100644 index 000000000..4264c809a --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt @@ -0,0 +1,12 @@ +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value + +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value + +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value + +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value + +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value + +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt new file mode 100644 index 000000000..e71930b51 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt @@ -0,0 +1,12 @@ +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value + +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value + +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value + +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value + +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value + +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt new file mode 100644 index 000000000..7c0f9ccd9 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt @@ -0,0 +1,12 @@ +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value + +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value + +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value + +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value + +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value + +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayLengthAssignment_0_4_25_array_length_assignment_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayLengthAssignment_0_4_25_array_length_assignment_sol__0.txt new file mode 100644 index 000000000..02c27c7b3 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayLengthAssignment_0_4_25_array_length_assignment_sol__0.txt @@ -0,0 +1,9 @@ +ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value: + - b.subStruct.x.length = param + 1 (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#41) + +ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value: + - a.x.length = param (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#36) + +ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value: + - arr.length = param (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#26) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayLengthAssignment_0_5_16_array_length_assignment_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayLengthAssignment_0_5_16_array_length_assignment_sol__0.txt new file mode 100644 index 000000000..5ca8654b5 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayLengthAssignment_0_5_16_array_length_assignment_sol__0.txt @@ -0,0 +1,9 @@ +ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value: + - b.subStruct.x.length = param + 1 (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#41) + +ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value: + - a.x.length = param (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#36) + +ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value: + - arr.length = param (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#26) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_4_25_inline_assembly_contract_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_4_25_inline_assembly_contract_sol__0.txt new file mode 100644 index 000000000..c00244213 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_4_25_inline_assembly_contract_sol__0.txt @@ -0,0 +1,3 @@ +GetCode.at(address) (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol#6-20) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol#7-20) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_4_25_inline_assembly_library_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_4_25_inline_assembly_library_sol__0.txt new file mode 100644 index 000000000..afba3895f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_4_25_inline_assembly_library_sol__0.txt @@ -0,0 +1,6 @@ +VectorSum.sumPureAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#25-47) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#26-47) + +VectorSum.sumAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#16-22) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#18-21) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_5_16_inline_assembly_contract_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_5_16_inline_assembly_contract_sol__0.txt new file mode 100644 index 000000000..37356c77e --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_5_16_inline_assembly_contract_sol__0.txt @@ -0,0 +1,3 @@ +GetCode.at(address) (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol#6-20) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol#7-19) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_5_16_inline_assembly_library_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_5_16_inline_assembly_library_sol__0.txt new file mode 100644 index 000000000..8ddbcec93 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_5_16_inline_assembly_library_sol__0.txt @@ -0,0 +1,6 @@ +VectorSum.sumAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#16-22) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#18-20) + +VectorSum.sumPureAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#25-47) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#26-46) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_6_11_inline_assembly_contract_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_6_11_inline_assembly_contract_sol__0.txt new file mode 100644 index 000000000..43d939dcf --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_6_11_inline_assembly_contract_sol__0.txt @@ -0,0 +1,3 @@ +GetCode.at(address) (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol#4-18) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol#5-17) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_6_11_inline_assembly_library_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_6_11_inline_assembly_library_sol__0.txt new file mode 100644 index 000000000..c2a6d44a1 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_6_11_inline_assembly_library_sol__0.txt @@ -0,0 +1,6 @@ +VectorSum.sumAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#14-20) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#16-18) + +VectorSum.sumPureAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#23-45) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#24-44) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_7_6_inline_assembly_contract_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_7_6_inline_assembly_contract_sol__0.txt new file mode 100644 index 000000000..42e5f8eaf --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_7_6_inline_assembly_contract_sol__0.txt @@ -0,0 +1,3 @@ +GetCode.at(address) (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol#4-18) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol#5-17) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_7_6_inline_assembly_library_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_7_6_inline_assembly_library_sol__0.txt new file mode 100644 index 000000000..0e20c94b8 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Assembly_0_7_6_inline_assembly_library_sol__0.txt @@ -0,0 +1,6 @@ +VectorSum.sumAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#14-20) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#16-18) + +VectorSum.sumPureAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#23-45) uses assembly + - INLINE ASM (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#24-44) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_4_25_assert_state_change_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_4_25_assert_state_change_sol__0.txt new file mode 100644 index 000000000..ba0febf9c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_4_25_assert_state_change_sol__0.txt @@ -0,0 +1,12 @@ +A.bad2() (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#19-21) has an assert() call which possibly changes state. + -assert(bool)(bad2_callee()) (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#20) +Consider using require() or change the invariant to not modify the state. + +A.bad0() (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#6-8) has an assert() call which possibly changes state. + -assert(bool)((s_a += 1) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#7) +Consider using require() or change the invariant to not modify the state. + +A.bad1(uint256) (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#11-13) has an assert() call which possibly changes state. + -assert(bool)((s_a += a) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#12) +Consider using require() or change the invariant to not modify the state. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_5_16_assert_state_change_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_5_16_assert_state_change_sol__0.txt new file mode 100644 index 000000000..dfc5260f9 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_5_16_assert_state_change_sol__0.txt @@ -0,0 +1,12 @@ +A.bad1(uint256) (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#11-13) has an assert() call which possibly changes state. + -assert(bool)((s_a += a) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#12) +Consider using require() or change the invariant to not modify the state. + +A.bad2() (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#19-21) has an assert() call which possibly changes state. + -assert(bool)(bad2_callee()) (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#20) +Consider using require() or change the invariant to not modify the state. + +A.bad0() (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#6-8) has an assert() call which possibly changes state. + -assert(bool)((s_a += 1) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#7) +Consider using require() or change the invariant to not modify the state. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_6_11_assert_state_change_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_6_11_assert_state_change_sol__0.txt new file mode 100644 index 000000000..7dbb05343 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_6_11_assert_state_change_sol__0.txt @@ -0,0 +1,12 @@ +A.bad0() (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#6-8) has an assert() call which possibly changes state. + -assert(bool)((s_a += 1) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#7) +Consider using require() or change the invariant to not modify the state. + +A.bad1(uint256) (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#11-13) has an assert() call which possibly changes state. + -assert(bool)((s_a += a) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#12) +Consider using require() or change the invariant to not modify the state. + +A.bad2() (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#19-21) has an assert() call which possibly changes state. + -assert(bool)(bad2_callee()) (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#20) +Consider using require() or change the invariant to not modify the state. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_7_6_assert_state_change_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_7_6_assert_state_change_sol__0.txt new file mode 100644 index 000000000..30643f73e --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_AssertStateChange_0_7_6_assert_state_change_sol__0.txt @@ -0,0 +1,12 @@ +A.bad2() (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#19-21) has an assert() call which possibly changes state. + -assert(bool)(bad2_callee()) (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#20) +Consider using require() or change the invariant to not modify the state. + +A.bad1(uint256) (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#11-13) has an assert() call which possibly changes state. + -assert(bool)((s_a += a) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#12) +Consider using require() or change the invariant to not modify the state. + +A.bad0() (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#6-8) has an assert() call which possibly changes state. + -assert(bool)((s_a += 1) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#7) +Consider using require() or change the invariant to not modify the state. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_4_25_backdoor_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_4_25_backdoor_sol__0.txt new file mode 100644 index 000000000..863dbbf31 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_4_25_backdoor_sol__0.txt @@ -0,0 +1,2 @@ +Backdoor function found in C.i_am_a_backdoor() (tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol#4-6) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_5_16_backdoor_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_5_16_backdoor_sol__0.txt new file mode 100644 index 000000000..8cacb70dd --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_5_16_backdoor_sol__0.txt @@ -0,0 +1,2 @@ +Backdoor function found in C.i_am_a_backdoor() (tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol#4-6) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_6_11_backdoor_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_6_11_backdoor_sol__0.txt new file mode 100644 index 000000000..6c026c056 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_6_11_backdoor_sol__0.txt @@ -0,0 +1,2 @@ +Backdoor function found in C.i_am_a_backdoor() (tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol#4-6) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_7_6_backdoor_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_7_6_backdoor_sol__0.txt new file mode 100644 index 000000000..162f1afd2 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Backdoor_0_7_6_backdoor_sol__0.txt @@ -0,0 +1,2 @@ +Backdoor function found in C.i_am_a_backdoor() (tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol#4-6) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_4_25_bad_prng_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_4_25_bad_prng_sol__0.txt new file mode 100644 index 000000000..18676563f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_4_25_bad_prng_sol__0.txt @@ -0,0 +1,8 @@ +BadPRNG.bad1() (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#8-10) uses a weak PRNG: "i = now % 10 (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#9)" + +BadPRNG.bad2() (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#12-14) uses a weak PRNG: "i = uint256(blockhash(uint256)(10000)) % 10 (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#13)" + +BadPRNG.bad3() (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#20-22) uses a weak PRNG: "i = foo() % 10 (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#21)" + +BadPRNG.bad0() (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#4-6) uses a weak PRNG: "i = block.timestamp % 10 (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#5)" + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_5_16_bad_prng_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_5_16_bad_prng_sol__0.txt new file mode 100644 index 000000000..34db1a9a2 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_5_16_bad_prng_sol__0.txt @@ -0,0 +1,8 @@ +BadPRNG.bad1() (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#8-10) uses a weak PRNG: "i = now % 10 (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#9)" + +BadPRNG.bad0() (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#4-6) uses a weak PRNG: "i = block.timestamp % 10 (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#5)" + +BadPRNG.bad2() (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#12-14) uses a weak PRNG: "i = uint256(blockhash(uint256)(10000)) % 10 (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#13)" + +BadPRNG.bad3() (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#20-22) uses a weak PRNG: "i = foo() % 10 (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#21)" + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_6_11_bad_prng_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_6_11_bad_prng_sol__0.txt new file mode 100644 index 000000000..4c65f2cad --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_6_11_bad_prng_sol__0.txt @@ -0,0 +1,8 @@ +BadPRNG.bad1() (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#8-10) uses a weak PRNG: "i = now % 10 (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#9)" + +BadPRNG.bad0() (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#4-6) uses a weak PRNG: "i = block.timestamp % 10 (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#5)" + +BadPRNG.bad2() (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#12-14) uses a weak PRNG: "i = uint256(blockhash(uint256)(10000)) % 10 (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#13)" + +BadPRNG.bad3() (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#20-22) uses a weak PRNG: "i = foo() % 10 (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#21)" + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_7_6_bad_prng_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_7_6_bad_prng_sol__0.txt new file mode 100644 index 000000000..dc2ca5bfb --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BadPRNG_0_7_6_bad_prng_sol__0.txt @@ -0,0 +1,8 @@ +BadPRNG.bad3() (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#20-22) uses a weak PRNG: "i = foo() % 10 (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#21)" + +BadPRNG.bad2() (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#12-14) uses a weak PRNG: "i = uint256(blockhash(uint256)(10000)) % 10 (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#13)" + +BadPRNG.bad1() (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#8-10) uses a weak PRNG: "i = block.timestamp % 10 (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#9)" + +BadPRNG.bad0() (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#4-6) uses a weak PRNG: "i = block.timestamp % 10 (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#5)" + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_4_25_boolean_constant_misuse_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_4_25_boolean_constant_misuse_sol__0.txt new file mode 100644 index 000000000..73aafb933 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_4_25_boolean_constant_misuse_sol__0.txt @@ -0,0 +1,3 @@ +MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly: + -(b || true) (tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_5_16_boolean_constant_misuse_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_5_16_boolean_constant_misuse_sol__0.txt new file mode 100644 index 000000000..f73791b89 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_5_16_boolean_constant_misuse_sol__0.txt @@ -0,0 +1,3 @@ +MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly: + -(b || true) (tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_6_11_boolean_constant_misuse_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_6_11_boolean_constant_misuse_sol__0.txt new file mode 100644 index 000000000..7e9969c00 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_6_11_boolean_constant_misuse_sol__0.txt @@ -0,0 +1,3 @@ +MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly: + -(b || true) (tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_7_6_boolean_constant_misuse_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_7_6_boolean_constant_misuse_sol__0.txt new file mode 100644 index 000000000..a2ccfe269 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BooleanConstantMisuse_0_7_6_boolean_constant_misuse_sol__0.txt @@ -0,0 +1,3 @@ +MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly: + -(b || true) (tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_4_25_boolean_constant_equality_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_4_25_boolean_constant_equality_sol__0.txt new file mode 100644 index 000000000..81b5ee2ae --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_4_25_boolean_constant_equality_sol__0.txt @@ -0,0 +1,3 @@ +MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol#7-9) compares to a boolean constant: + -(b == true) (tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol#8) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_5_16_boolean_constant_equality_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_5_16_boolean_constant_equality_sol__0.txt new file mode 100644 index 000000000..423335c2e --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_5_16_boolean_constant_equality_sol__0.txt @@ -0,0 +1,3 @@ +MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol#7-9) compares to a boolean constant: + -(b == true) (tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol#8) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_6_11_boolean_constant_equality_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_6_11_boolean_constant_equality_sol__0.txt new file mode 100644 index 000000000..48f3f294c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_6_11_boolean_constant_equality_sol__0.txt @@ -0,0 +1,3 @@ +MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol#7-9) compares to a boolean constant: + -(b == true) (tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol#8) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_7_6_boolean_constant_equality_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_7_6_boolean_constant_equality_sol__0.txt new file mode 100644 index 000000000..24e475cc0 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BooleanEquality_0_7_6_boolean_constant_equality_sol__0.txt @@ -0,0 +1,3 @@ +MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol#7-9) compares to a boolean constant: + -(b == true) (tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol#8) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_4_25_shadowing_builtin_symbols_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_4_25_shadowing_builtin_symbols_sol__0.txt new file mode 100644 index 000000000..7c94735da --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_4_25_shadowing_builtin_symbols_sol__0.txt @@ -0,0 +1,26 @@ +Reserved.mutable (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#32) (state variable) shadows built-in symbol" + +ExtendedContract.ecrecover (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#11) (state variable) shadows built-in symbol" + +FurtherExtendedContract.require().keccak256 (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#25) (local variable) shadows built-in symbol" + +FurtherExtendedContract.abi (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#21) (state variable) shadows built-in symbol" + +BaseContract.blockhash (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#4) (state variable) shadows built-in symbol" + +FurtherExtendedContract.this (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#20) (state variable) shadows built-in symbol" + +BaseContract.now (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#5) (state variable) shadows built-in symbol" + +BaseContractrevert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#7) (event) shadows built-in symbol" + +ExtendedContract.assert(bool).msg (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#14) (local variable) shadows built-in symbol" + +ExtendedContract.assert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#13-15) (function) shadows built-in symbol" + +FurtherExtendedContract.require().sha3 (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#26) (local variable) shadows built-in symbol" + +FurtherExtendedContract.blockhash (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#19) (state variable) shadows built-in symbol" + +FurtherExtendedContract.require() (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#23-28) (modifier) shadows built-in symbol" + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_5_16_shadowing_builtin_symbols_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_5_16_shadowing_builtin_symbols_sol__0.txt new file mode 100644 index 000000000..f576e19e0 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_5_16_shadowing_builtin_symbols_sol__0.txt @@ -0,0 +1,24 @@ +ExtendedContract.ecrecover (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#11) (state variable) shadows built-in symbol" + +FurtherExtendedContract.require().keccak256 (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#25) (local variable) shadows built-in symbol" + +FurtherExtendedContract.abi (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#21) (state variable) shadows built-in symbol" + +BaseContract.blockhash (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#4) (state variable) shadows built-in symbol" + +FurtherExtendedContract.this (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#20) (state variable) shadows built-in symbol" + +BaseContract.now (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#5) (state variable) shadows built-in symbol" + +BaseContractrevert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#7) (event) shadows built-in symbol" + +ExtendedContract.assert(bool).msg (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#14) (local variable) shadows built-in symbol" + +ExtendedContract.assert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#13-15) (function) shadows built-in symbol" + +FurtherExtendedContract.require().sha3 (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#26) (local variable) shadows built-in symbol" + +FurtherExtendedContract.blockhash (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#19) (state variable) shadows built-in symbol" + +FurtherExtendedContract.require() (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#23-28) (modifier) shadows built-in symbol" + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_4_25_constant_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_4_25_constant_sol__0.txt new file mode 100644 index 000000000..d99f65c7d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_4_25_constant_sol__0.txt @@ -0,0 +1,2 @@ +Constant.test_assembly_bug() (tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol#22-24) is declared view but contains assembly code + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_5_16_constant_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_5_16_constant_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_6_11_constant_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_6_11_constant_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_7_6_constant_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsAsm_0_7_6_constant_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_4_25_constant_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_4_25_constant_sol__0.txt new file mode 100644 index 000000000..67c19d0ab --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_4_25_constant_sol__0.txt @@ -0,0 +1,6 @@ +Constant.test_constant_bug() (tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#9-11) is declared view but changes state variables: + - Constant.a (tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#3) + +Constant.test_view_bug() (tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#5-7) is declared view but changes state variables: + - Constant.a (tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_5_16_constant_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_5_16_constant_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_6_11_constant_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_6_11_constant_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_7_6_constant_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantFunctionsState_0_7_6_constant_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_4_25_pragma_0_4_25_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_4_25_pragma_0_4_25_sol__0.txt new file mode 100644 index 000000000..0d0deaae0 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_4_25_pragma_0_4_25_sol__0.txt @@ -0,0 +1,5 @@ +Different versions of Solidity are used: + - Version used: ['^0.4.24', '^0.4.25'] + - ^0.4.24 (tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.24.sol#1) + - ^0.4.25 (tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol#1) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_5_16_pragma_0_5_16_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_5_16_pragma_0_5_16_sol__0.txt new file mode 100644 index 000000000..a619f1ed0 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_5_16_pragma_0_5_16_sol__0.txt @@ -0,0 +1,5 @@ +Different versions of Solidity are used: + - Version used: ['^0.5.15', '^0.5.16'] + - ^0.5.15 (tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.15.sol#1) + - ^0.5.16 (tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol#1) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_6_11_pragma_0_6_11_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_6_11_pragma_0_6_11_sol__0.txt new file mode 100644 index 000000000..af468f3ba --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_6_11_pragma_0_6_11_sol__0.txt @@ -0,0 +1,5 @@ +Different versions of Solidity are used: + - Version used: ['^0.6.10', '^0.6.11'] + - ^0.6.10 (tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.10.sol#1) + - ^0.6.11 (tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol#1) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_7_6_pragma_0_7_6_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_7_6_pragma_0_7_6_sol__0.txt new file mode 100644 index 000000000..83b79b494 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_7_6_pragma_0_7_6_sol__0.txt @@ -0,0 +1,5 @@ +Different versions of Solidity are used: + - Version used: ['^0.7.5', '^0.7.6'] + - ^0.7.5 (tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.5.sol#1) + - ^0.7.6 (tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol#1) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_4_25_controlled_delegatecall_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_4_25_controlled_delegatecall_sol__0.txt new file mode 100644 index 000000000..9a08cc149 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_4_25_controlled_delegatecall_sol__0.txt @@ -0,0 +1,6 @@ +C.bad_delegate_call2(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id + - addr_bad.delegatecall(abi.encode(func_id,data)) (tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#19) + +C.bad_delegate_call(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id + - addr_bad.delegatecall(data) (tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_5_16_controlled_delegatecall_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_5_16_controlled_delegatecall_sol__0.txt new file mode 100644 index 000000000..461b4e1ad --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_5_16_controlled_delegatecall_sol__0.txt @@ -0,0 +1,6 @@ +C.bad_delegate_call2(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id + - addr_bad.delegatecall(abi.encode(func_id,data)) (tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#19) + +C.bad_delegate_call(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id + - addr_bad.delegatecall(data) (tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_6_11_controlled_delegatecall_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_6_11_controlled_delegatecall_sol__0.txt new file mode 100644 index 000000000..7be83ec8c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_6_11_controlled_delegatecall_sol__0.txt @@ -0,0 +1,6 @@ +C.bad_delegate_call2(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id + - addr_bad.delegatecall(abi.encode(func_id,data)) (tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#19) + +C.bad_delegate_call(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id + - addr_bad.delegatecall(data) (tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_7_6_controlled_delegatecall_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_7_6_controlled_delegatecall_sol__0.txt new file mode 100644 index 000000000..bc58c9d2e --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ControlledDelegateCall_0_7_6_controlled_delegatecall_sol__0.txt @@ -0,0 +1,6 @@ +C.bad_delegate_call2(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id + - addr_bad.delegatecall(abi.encode(func_id,data)) (tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#19) + +C.bad_delegate_call(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id + - addr_bad.delegatecall(data) (tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_4_25_multiple_costly_operations_in_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_4_25_multiple_costly_operations_in_loop_sol__0.txt new file mode 100644 index 000000000..7b114acb7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_4_25_multiple_costly_operations_in_loop_sol__0.txt @@ -0,0 +1,12 @@ +CostlyOperationsInLoopBase.bad_base() (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#5-9) has costly operations inside a loop: + - state_variable_base ++ (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#7) + +CostlyOperationsInLoop.bad3_internal() (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#41-43) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#42) + +CostlyOperationsInLoop.bad2() (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#26-33) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#31) + +CostlyOperationsInLoop.bad() (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#20-24) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#22) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_5_16_multiple_costly_operations_in_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_5_16_multiple_costly_operations_in_loop_sol__0.txt new file mode 100644 index 000000000..6d2fd27e1 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_5_16_multiple_costly_operations_in_loop_sol__0.txt @@ -0,0 +1,12 @@ +CostlyOperationsInLoopBase.bad_base() (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#5-9) has costly operations inside a loop: + - state_variable_base ++ (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#7) + +CostlyOperationsInLoop.bad2() (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#26-33) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#31) + +CostlyOperationsInLoop.bad3_internal() (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#41-43) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#42) + +CostlyOperationsInLoop.bad() (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#20-24) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#22) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_6_11_multiple_costly_operations_in_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_6_11_multiple_costly_operations_in_loop_sol__0.txt new file mode 100644 index 000000000..d7ca011c8 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_6_11_multiple_costly_operations_in_loop_sol__0.txt @@ -0,0 +1,12 @@ +CostlyOperationsInLoop.bad() (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#20-24) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#22) + +CostlyOperationsInLoop.bad2() (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#26-33) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#31) + +CostlyOperationsInLoop.bad3_internal() (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#41-43) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#42) + +CostlyOperationsInLoopBase.bad_base() (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#5-9) has costly operations inside a loop: + - state_variable_base ++ (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#7) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_7_6_multiple_costly_operations_in_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_7_6_multiple_costly_operations_in_loop_sol__0.txt new file mode 100644 index 000000000..da2804728 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CostlyOperationsInLoop_0_7_6_multiple_costly_operations_in_loop_sol__0.txt @@ -0,0 +1,12 @@ +CostlyOperationsInLoop.bad3_internal() (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#41-43) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#42) + +CostlyOperationsInLoopBase.bad_base() (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#5-9) has costly operations inside a loop: + - state_variable_base ++ (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#7) + +CostlyOperationsInLoop.bad2() (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#26-33) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#31) + +CostlyOperationsInLoop.bad() (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#20-24) has costly operations inside a loop: + - state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#22) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_4_25_const_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_4_25_const_state_variables_sol__0.txt new file mode 100644 index 000000000..0f5b8fb98 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_4_25_const_state_variables_sol__0.txt @@ -0,0 +1,12 @@ +A.text2 (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#14) should be constant + +B.mySistersAddress (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#26) should be constant + +A.myFriendsAddress (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#7) should be constant + +MyConc.should_be_constant (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#42) should be constant + +MyConc.should_be_constant_2 (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#43) should be constant + +A.test (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#10) should be constant + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_5_16_const_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_5_16_const_state_variables_sol__0.txt new file mode 100644 index 000000000..89560ac47 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_5_16_const_state_variables_sol__0.txt @@ -0,0 +1,14 @@ +MyConc.should_be_constant_3 (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#44) should be constant + +A.text2 (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#14) should be constant + +B.mySistersAddress (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#26) should be constant + +A.myFriendsAddress (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#7) should be constant + +MyConc.should_be_constant (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#42) should be constant + +MyConc.should_be_constant_2 (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#43) should be constant + +A.test (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#10) should be constant + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_6_11_const_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_6_11_const_state_variables_sol__0.txt new file mode 100644 index 000000000..68bfc2ddc --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_6_11_const_state_variables_sol__0.txt @@ -0,0 +1,14 @@ +A.text2 (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#12) should be constant + +Bad.should_be_constant_2 (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#41) should be constant + +B.mySistersAddress (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#24) should be constant + +A.myFriendsAddress (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#5) should be constant + +Bad.should_be_constant (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#40) should be constant + +Bad.should_be_constant_3 (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#42) should be constant + +A.test (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#8) should be constant + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_7_6_const_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_7_6_const_state_variables_sol__0.txt new file mode 100644 index 000000000..581ee43f7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_7_6_const_state_variables_sol__0.txt @@ -0,0 +1,14 @@ +A.text2 (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#12) should be constant + +Bad.should_be_constant_2 (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#41) should be constant + +B.mySistersAddress (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#24) should be constant + +A.myFriendsAddress (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#5) should be constant + +Bad.should_be_constant (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#40) should be constant + +Bad.should_be_constant_3 (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#42) should be constant + +A.test (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#8) should be constant + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_8_0_const_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_8_0_const_state_variables_sol__0.txt new file mode 100644 index 000000000..c18aa2fe8 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeConstant_0_8_0_const_state_variables_sol__0.txt @@ -0,0 +1,14 @@ +A.text2 (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#12) should be constant + +Bad.should_be_constant_2 (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#41) should be constant + +B.mySistersAddress (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#24) should be constant + +A.myFriendsAddress (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#5) should be constant + +Bad.should_be_constant (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#40) should be constant + +Bad.should_be_constant_3 (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#42) should be constant + +A.test (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#8) should be constant + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_4_25_immut_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_4_25_immut_state_variables_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_5_16_immut_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_5_16_immut_state_variables_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_6_11_immut_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_6_11_immut_state_variables_sol__0.txt new file mode 100644 index 000000000..4c46222f9 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_6_11_immut_state_variables_sol__0.txt @@ -0,0 +1,10 @@ +Bad.should_be_immutable_5 (tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#47) should be immutable + +Bad.should_be_immutable_2 (tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#44) should be immutable + +Bad.should_be_immutable_4 (tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#46) should be immutable + +Bad.should_be_immutable (tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#43) should be immutable + +Bad.should_be_immutable_3 (tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#45) should be immutable + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_7_6_immut_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_7_6_immut_state_variables_sol__0.txt new file mode 100644 index 000000000..36409f9b9 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_7_6_immut_state_variables_sol__0.txt @@ -0,0 +1,10 @@ +Bad.should_be_immutable_5 (tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#47) should be immutable + +Bad.should_be_immutable_2 (tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#44) should be immutable + +Bad.should_be_immutable_4 (tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#46) should be immutable + +Bad.should_be_immutable (tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#43) should be immutable + +Bad.should_be_immutable_3 (tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#45) should be immutable + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_8_0_immut_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_8_0_immut_state_variables_sol__0.txt new file mode 100644 index 000000000..9c8fc9f63 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CouldBeImmutable_0_8_0_immut_state_variables_sol__0.txt @@ -0,0 +1,8 @@ +Bad.should_be_immutable_5 (tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#46) should be immutable + +Bad.should_be_immutable_2 (tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#44) should be immutable + +Bad.should_be_immutable (tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#43) should be immutable + +Bad.should_be_immutable_3 (tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#45) should be immutable + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CyclomaticComplexity_0_8_16_HighCyclomaticComplexity_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CyclomaticComplexity_0_8_16_HighCyclomaticComplexity_sol__0.txt new file mode 100644 index 000000000..f013da4cd --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CyclomaticComplexity_0_8_16_HighCyclomaticComplexity_sol__0.txt @@ -0,0 +1,2 @@ +HighCyclomaticComplexity.highCC() (tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol#17-31) has a high cyclomatic complexity (12). + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CyclomaticComplexity_0_8_16_LowCyclomaticComplexity_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CyclomaticComplexity_0_8_16_LowCyclomaticComplexity_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DeadCode_0_8_0_dead_code_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DeadCode_0_8_0_dead_code_sol__0.txt new file mode 100644 index 000000000..c893114cf --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DeadCode_0_8_0_dead_code_sol__0.txt @@ -0,0 +1,6 @@ +Test4.unused_but_shadowed() (tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#26-28) is never used and should be removed + +Test.unused() (tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#2-4) is never used and should be removed + +Test2.unused_but_shadowed() (tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#10-12) is never used and should be removed + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_4_25_delegatecall_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_4_25_delegatecall_loop_sol__0.txt new file mode 100644 index 000000000..a64167702 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_4_25_delegatecall_loop_sol__0.txt @@ -0,0 +1,6 @@ +C.bad(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#5-9) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#7) + +C.bad3(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#25-31) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#28) + +C.bad2_internal(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#19-23) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#21) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_5_16_delegatecall_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_5_16_delegatecall_loop_sol__0.txt new file mode 100644 index 000000000..e6ea14e79 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_5_16_delegatecall_loop_sol__0.txt @@ -0,0 +1,6 @@ +C.bad3(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#25-31) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#28) + +C.bad2_internal(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#19-23) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#21) + +C.bad(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#5-9) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#7) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_6_11_delegatecall_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_6_11_delegatecall_loop_sol__0.txt new file mode 100644 index 000000000..ce50766fe --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_6_11_delegatecall_loop_sol__0.txt @@ -0,0 +1,6 @@ +C.bad2_internal(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#19-23) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#21) + +C.bad(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#5-9) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#7) + +C.bad3(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#25-31) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#28) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_7_6_delegatecall_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_7_6_delegatecall_loop_sol__0.txt new file mode 100644 index 000000000..9d4decf4d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_7_6_delegatecall_loop_sol__0.txt @@ -0,0 +1,6 @@ +C.bad3(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#25-31) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#28) + +C.bad(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#5-9) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#7) + +C.bad2_internal(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#19-23) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#21) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_8_0_delegatecall_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_8_0_delegatecall_loop_sol__0.txt new file mode 100644 index 000000000..d3d9f047c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DelegatecallInLoop_0_8_0_delegatecall_loop_sol__0.txt @@ -0,0 +1,6 @@ +C.bad2_internal(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#19-23) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#21) + +C.bad(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#5-9) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#7) + +C.bad3(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#25-31) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#28) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DeprecatedStandards_0_4_25_deprecated_calls_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DeprecatedStandards_0_4_25_deprecated_calls_sol__0.txt new file mode 100644 index 000000000..9a10c2971 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DeprecatedStandards_0_4_25_deprecated_calls_sol__0.txt @@ -0,0 +1,6 @@ +Deprecated standard detected THROW (tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol#7): + - Usage of "throw" should be replaced with "revert()" + +Deprecated standard detected msg.gas == msg.value (tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol#5): + - Usage of "msg.gas" should be replaced with "gasleft()" + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_4_25_divide_before_multiply_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_4_25_divide_before_multiply_sol__0.txt new file mode 100644 index 000000000..95537a3a5 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_4_25_divide_before_multiply_sol__0.txt @@ -0,0 +1,3 @@ +A.f(uint256,uint256,uint256) (tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol#2-4) performs a multiplication on the result of a division: + - (a / b) * c (tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_5_16_divide_before_multiply_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_5_16_divide_before_multiply_sol__0.txt new file mode 100644 index 000000000..0ae4d354a --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_5_16_divide_before_multiply_sol__0.txt @@ -0,0 +1,3 @@ +A.f(uint256,uint256,uint256) (tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol#2-4) performs a multiplication on the result of a division: + - (a / b) * c (tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_6_11_divide_before_multiply_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_6_11_divide_before_multiply_sol__0.txt new file mode 100644 index 000000000..54b35708c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_6_11_divide_before_multiply_sol__0.txt @@ -0,0 +1,3 @@ +A.f(uint256,uint256,uint256) (tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol#2-4) performs a multiplication on the result of a division: + - (a / b) * c (tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_7_6_divide_before_multiply_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_7_6_divide_before_multiply_sol__0.txt new file mode 100644 index 000000000..37dc22862 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DivideBeforeMultiply_0_7_6_divide_before_multiply_sol__0.txt @@ -0,0 +1,3 @@ +A.f(uint256,uint256,uint256) (tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol#2-4) performs a multiplication on the result of a division: + - (a / b) * c (tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_collision_sol__0.txt new file mode 100644 index 000000000..e800ed951 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_collision_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.fopwCDKKK() (tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_state_var_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_state_var_collision_sol__0.txt new file mode 100644 index 000000000..aa20b6983 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_state_var_collision_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.fopwCDKKK (tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol#46) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_wrong_return_type_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_wrong_return_type_sol__0.txt new file mode 100644 index 000000000..8443c4fb7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_4_25_permit_domain_wrong_return_type_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.DOMAIN_SEPARATOR() (tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_collision_sol__0.txt new file mode 100644 index 000000000..deab568b6 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_collision_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.fopwCDKKK() (tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_state_var_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_state_var_collision_sol__0.txt new file mode 100644 index 000000000..df4ea295c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_state_var_collision_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.fopwCDKKK (tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol#46) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_wrong_return_type_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_wrong_return_type_sol__0.txt new file mode 100644 index 000000000..0471fd697 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_5_16_permit_domain_wrong_return_type_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.DOMAIN_SEPARATOR() (tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_collision_sol__0.txt new file mode 100644 index 000000000..d5d492fe7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_collision_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.fopwCDKKK() (tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_state_var_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_state_var_collision_sol__0.txt new file mode 100644 index 000000000..ad02ccd6f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_state_var_collision_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.fopwCDKKK (tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol#46) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_wrong_return_type_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_wrong_return_type_sol__0.txt new file mode 100644 index 000000000..74ad8a93d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_6_11_permit_domain_wrong_return_type_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.DOMAIN_SEPARATOR() (tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_collision_sol__0.txt new file mode 100644 index 000000000..6eab54252 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_collision_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.fopwCDKKK() (tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_state_var_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_state_var_collision_sol__0.txt new file mode 100644 index 000000000..842252b1b --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_state_var_collision_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.fopwCDKKK (tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol#46) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_wrong_return_type_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_wrong_return_type_sol__0.txt new file mode 100644 index 000000000..2b8cac108 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_7_6_permit_domain_wrong_return_type_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.DOMAIN_SEPARATOR() (tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_collision_sol__0.txt new file mode 100644 index 000000000..665130448 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_collision_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.fopwCDKKK() (tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_state_var_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_state_var_collision_sol__0.txt new file mode 100644 index 000000000..4ff75df8e --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_state_var_collision_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.fopwCDKKK (tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol#46) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_wrong_return_type_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_wrong_return_type_sol__0.txt new file mode 100644 index 000000000..6f03f9d19 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_DomainSeparatorCollision_0_8_0_permit_domain_wrong_return_type_sol__0.txt @@ -0,0 +1,2 @@ +The function signature of ERC20.DOMAIN_SEPARATOR() (tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_4_25_external_function_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_4_25_external_function_2_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_4_25_external_function_3_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_4_25_external_function_3_sol__0.txt new file mode 100644 index 000000000..71bdafede --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_4_25_external_function_3_sol__0.txt @@ -0,0 +1,9 @@ +bad2(uint256[]) should be declared external: + - Test.bad2(uint256[]) (tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#8) + +bad(bytes) should be declared external: + - Test.bad(bytes) (tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#7) + +bad3(string) should be declared external: + - Test.bad3(string) (tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#9) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_4_25_external_function_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_4_25_external_function_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_5_16_external_function_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_5_16_external_function_2_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_5_16_external_function_3_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_5_16_external_function_3_sol__0.txt new file mode 100644 index 000000000..a0144a084 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_5_16_external_function_3_sol__0.txt @@ -0,0 +1,20 @@ +bad4(string) should be declared external: + - Test.bad4(string) (tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#18) +Moreover, the following function parameters should change its data location: +x location should be calldata + +bad3(Test.testStruct) should be declared external: + - Test.bad3(Test.testStruct) (tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#17) +Moreover, the following function parameters should change its data location: +x location should be calldata + +bad2(uint256[]) should be declared external: + - Test.bad2(uint256[]) (tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#16) +Moreover, the following function parameters should change its data location: +x location should be calldata + +bad(bytes) should be declared external: + - Test.bad(bytes) (tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#15) +Moreover, the following function parameters should change its data location: +x location should be calldata + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_5_16_external_function_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_5_16_external_function_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_6_11_external_function_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_6_11_external_function_2_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_6_11_external_function_3_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_6_11_external_function_3_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_6_11_external_function_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_6_11_external_function_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_7_6_external_function_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_7_6_external_function_2_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_7_6_external_function_3_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_7_6_external_function_3_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_7_6_external_function_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ExternalFunction_0_7_6_external_function_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_4_25_function_init_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_4_25_function_init_state_variables_sol__0.txt new file mode 100644 index 000000000..d289faead --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_4_25_function_init_state_variables_sol__0.txt @@ -0,0 +1,15 @@ +StateVarInitFromFunction.v (tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable: + - set() + +StateVarInitFromFunction.z4 (tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable: + - z3 + 5 + +StateVarInitFromFunction.x (tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable: + - set() + +StateVarInitFromFunction.y1 (tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable: + - 5 + get() + +StateVarInitFromFunction.y2 (tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable: + - (10 + (5 + get())) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_5_16_function_init_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_5_16_function_init_state_variables_sol__0.txt new file mode 100644 index 000000000..b28972700 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_5_16_function_init_state_variables_sol__0.txt @@ -0,0 +1,15 @@ +StateVarInitFromFunction.v (tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable: + - set() + +StateVarInitFromFunction.z4 (tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable: + - z3 + 5 + +StateVarInitFromFunction.x (tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable: + - set() + +StateVarInitFromFunction.y1 (tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable: + - 5 + get() + +StateVarInitFromFunction.y2 (tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable: + - (10 + (5 + get())) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_6_11_function_init_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_6_11_function_init_state_variables_sol__0.txt new file mode 100644 index 000000000..234059c8d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_6_11_function_init_state_variables_sol__0.txt @@ -0,0 +1,15 @@ +StateVarInitFromFunction.v (tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable: + - set() + +StateVarInitFromFunction.z4 (tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable: + - z3 + 5 + +StateVarInitFromFunction.x (tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable: + - set() + +StateVarInitFromFunction.y1 (tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable: + - 5 + get() + +StateVarInitFromFunction.y2 (tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable: + - (10 + (5 + get())) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_7_6_function_init_state_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_7_6_function_init_state_variables_sol__0.txt new file mode 100644 index 000000000..81a654d43 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_FunctionInitializedState_0_7_6_function_init_state_variables_sol__0.txt @@ -0,0 +1,15 @@ +StateVarInitFromFunction.v (tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable: + - set() + +StateVarInitFromFunction.z4 (tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable: + - z3 + 5 + +StateVarInitFromFunction.x (tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable: + - set() + +StateVarInitFromFunction.y1 (tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable: + - 5 + get() + +StateVarInitFromFunction.y2 (tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable: + - (10 + (5 + get())) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_4_25_incorrect_erc20_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_4_25_incorrect_erc20_interface_sol__0.txt new file mode 100644 index 000000000..305758478 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_4_25_incorrect_erc20_interface_sol__0.txt @@ -0,0 +1,12 @@ +Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#5) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#9) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#8) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#6) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#7) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#4) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_5_16_incorrect_erc20_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_5_16_incorrect_erc20_interface_sol__0.txt new file mode 100644 index 000000000..19f532fd7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_5_16_incorrect_erc20_interface_sol__0.txt @@ -0,0 +1,12 @@ +Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#5) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#9) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#8) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#6) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#7) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#4) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_6_11_incorrect_erc20_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_6_11_incorrect_erc20_interface_sol__0.txt new file mode 100644 index 000000000..cfd549baa --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_6_11_incorrect_erc20_interface_sol__0.txt @@ -0,0 +1,12 @@ +Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#5) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#9) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#8) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#6) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#7) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#4) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_7_6_incorrect_erc20_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_7_6_incorrect_erc20_interface_sol__0.txt new file mode 100644 index 000000000..f1d77d1bd --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC20InterfaceDetection_0_7_6_incorrect_erc20_interface_sol__0.txt @@ -0,0 +1,12 @@ +Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#5) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#9) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#8) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#6) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#7) + +Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#4) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_4_25_incorrect_erc721_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_4_25_incorrect_erc721_interface_sol__0.txt new file mode 100644 index 000000000..b3de59687 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_4_25_incorrect_erc721_interface_sol__0.txt @@ -0,0 +1,20 @@ +Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#14) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#12) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#10) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#7) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#8) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#11) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#4) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#13) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#9) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#15) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_5_16_incorrect_erc721_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_5_16_incorrect_erc721_interface_sol__0.txt new file mode 100644 index 000000000..584c40378 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_5_16_incorrect_erc721_interface_sol__0.txt @@ -0,0 +1,20 @@ +Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#14) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#12) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#10) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#7) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#8) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#11) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#4) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#13) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#9) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#15) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_6_11_incorrect_erc721_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_6_11_incorrect_erc721_interface_sol__0.txt new file mode 100644 index 000000000..5373d72cc --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_6_11_incorrect_erc721_interface_sol__0.txt @@ -0,0 +1,20 @@ +Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#14) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#12) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#10) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#7) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#8) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#11) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#4) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#13) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#9) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#15) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_7_6_incorrect_erc721_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_7_6_incorrect_erc721_interface_sol__0.txt new file mode 100644 index 000000000..415adcb7c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectERC721InterfaceDetection_0_7_6_incorrect_erc721_interface_sol__0.txt @@ -0,0 +1,20 @@ +Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#14) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#12) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#10) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#7) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#8) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#11) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#4) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#13) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#9) + +Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#15) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt new file mode 100644 index 000000000..a1a384559 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt @@ -0,0 +1,4 @@ +solc-0.4.25 is not recommended for deployment + +Pragma version0.4.25 (tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol#1) allows old versions + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt new file mode 100644 index 000000000..c9f67a00d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt @@ -0,0 +1,3 @@ +Pragma version0.5.14 (tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol#1) is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + +solc-0.5.14 is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt new file mode 100644 index 000000000..eaf6d3bef --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt @@ -0,0 +1,4 @@ +Pragma version^0.5.15 (tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol#1) allows old versions + +solc-0.5.16 is not recommended for deployment + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt new file mode 100644 index 000000000..4fbde7008 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt @@ -0,0 +1,4 @@ +Pragma version>=0.5.0<0.6.0 (tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol#1) allows old versions + +solc-0.5.16 is not recommended for deployment + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt new file mode 100644 index 000000000..3348b38bf --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt @@ -0,0 +1,4 @@ +solc-0.5.16 is not recommended for deployment + +Pragma version0.5.16 (tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol#1) allows old versions + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt new file mode 100644 index 000000000..b019ea235 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt @@ -0,0 +1,4 @@ +solc-0.6.10 is not recommended for deployment + +Pragma version0.6.10 (tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol#1) allows old versions + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt new file mode 100644 index 000000000..d9882ee92 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt @@ -0,0 +1,4 @@ +solc-0.6.11 is not recommended for deployment + +Pragma version^0.6.10 (tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol#1) allows old versions + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt new file mode 100644 index 000000000..9e0b51f1c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt @@ -0,0 +1,4 @@ +Pragma version>=0.6.0<0.7.0 (tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol#1) allows old versions + +solc-0.6.11 is not recommended for deployment + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt new file mode 100644 index 000000000..5dfddac9e --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt @@ -0,0 +1,4 @@ +Pragma version0.6.11 (tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol#1) allows old versions + +solc-0.6.11 is not recommended for deployment + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt new file mode 100644 index 000000000..954505f8c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt @@ -0,0 +1,4 @@ +Pragma version0.7.4 (tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol#1) allows old versions + +solc-0.7.4 is not recommended for deployment + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt new file mode 100644 index 000000000..157db71ce --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt @@ -0,0 +1,4 @@ +Pragma version^0.7.4 (tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol#1) allows old versions + +solc-0.7.6 is not recommended for deployment + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_2_sol__0.txt new file mode 100644 index 000000000..53628ace1 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_2_sol__0.txt @@ -0,0 +1,4 @@ +Pragma version>=0.7.0<=0.7.6 (tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol#1) is too complex + +solc-0.7.6 is not recommended for deployment + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt new file mode 100644 index 000000000..6d4297f2b --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt @@ -0,0 +1,4 @@ +Pragma version0.7.6 (tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol#1) allows old versions + +solc-0.7.6 is not recommended for deployment + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_4_25_incorrect_equality_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_4_25_incorrect_equality_sol__0.txt new file mode 100644 index 000000000..49a70d163 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_4_25_incorrect_equality_sol__0.txt @@ -0,0 +1,36 @@ +TestContractBalance.bad3() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#47-50) uses a dangerous strict equality: + - require(bool)(10000000000000000000 == address(this).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#48) + +TestContractBalance.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#37-40) uses a dangerous strict equality: + - require(bool)(10000000000000000000 == address(address(this)).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#38) + +ERC20TestBalance.bad1(ERC20Variable) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#25-27) uses a dangerous strict equality: + - require(bool)(erc.balanceOf(msg.sender) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#26) + +TestSolidityKeyword.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#123-125) uses a dangerous strict equality: + - require(bool)(now == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#124) + +TestContractBalance.bad4() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#52-57) uses a dangerous strict equality: + - balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#54) + +ERC20TestBalance.bad0(ERC20Function) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#21-23) uses a dangerous strict equality: + - require(bool)(erc.balanceOf(address(this)) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#22) + +TestSolidityKeyword.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#127-129) uses a dangerous strict equality: + - require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#128) + +TestContractBalance.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#32-35) uses a dangerous strict equality: + - require(bool)(address(address(this)).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#33) + +TestContractBalance.bad5() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#59-64) uses a dangerous strict equality: + - 10000000000000000000 == balance (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#61) + +TestContractBalance.bad6() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#66-71) uses a dangerous strict equality: + - balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#68) + +TestSolidityKeyword.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#131-133) uses a dangerous strict equality: + - require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#132) + +TestContractBalance.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#42-45) uses a dangerous strict equality: + - require(bool)(address(this).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#43) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_5_16_incorrect_equality_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_5_16_incorrect_equality_sol__0.txt new file mode 100644 index 000000000..56f7c2ef9 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_5_16_incorrect_equality_sol__0.txt @@ -0,0 +1,36 @@ +TestContractBalance.bad3() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#47-50) uses a dangerous strict equality: + - require(bool)(10000000000000000000 == address(this).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#48) + +TestContractBalance.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#32-35) uses a dangerous strict equality: + - require(bool)(address(address(this)).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#33) + +TestContractBalance.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#37-40) uses a dangerous strict equality: + - require(bool)(10000000000000000000 == address(address(this)).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#38) + +TestContractBalance.bad6() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#66-71) uses a dangerous strict equality: + - balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#68) + +ERC20TestBalance.bad1(ERC20Variable) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#25-27) uses a dangerous strict equality: + - require(bool)(erc.balanceOf(msg.sender) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#26) + +TestContractBalance.bad5() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#59-64) uses a dangerous strict equality: + - 10000000000000000000 == balance (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#61) + +TestContractBalance.bad4() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#52-57) uses a dangerous strict equality: + - balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#54) + +TestSolidityKeyword.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#127-129) uses a dangerous strict equality: + - require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#128) + +TestContractBalance.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#42-45) uses a dangerous strict equality: + - require(bool)(address(this).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#43) + +ERC20TestBalance.bad0(ERC20Function) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#21-23) uses a dangerous strict equality: + - require(bool)(erc.balanceOf(address(this)) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#22) + +TestSolidityKeyword.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#123-125) uses a dangerous strict equality: + - require(bool)(now == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#124) + +TestSolidityKeyword.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#131-133) uses a dangerous strict equality: + - require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#132) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_6_11_incorrect_equality_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_6_11_incorrect_equality_sol__0.txt new file mode 100644 index 000000000..11bb0e3fc --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_6_11_incorrect_equality_sol__0.txt @@ -0,0 +1,36 @@ +TestContractBalance.bad5() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#59-64) uses a dangerous strict equality: + - 10000000000000000000 == balance (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#61) + +ERC20TestBalance.bad0(ERC20Function) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#21-23) uses a dangerous strict equality: + - require(bool)(erc.balanceOf(address(this)) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#22) + +TestContractBalance.bad3() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#47-50) uses a dangerous strict equality: + - require(bool)(10000000000000000000 == address(this).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#48) + +TestContractBalance.bad6() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#66-71) uses a dangerous strict equality: + - balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#68) + +TestSolidityKeyword.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#123-125) uses a dangerous strict equality: + - require(bool)(now == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#124) + +TestContractBalance.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#42-45) uses a dangerous strict equality: + - require(bool)(address(this).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#43) + +ERC20TestBalance.bad1(ERC20Variable) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#25-27) uses a dangerous strict equality: + - require(bool)(erc.balanceOf(msg.sender) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#26) + +TestSolidityKeyword.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#127-129) uses a dangerous strict equality: + - require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#128) + +TestContractBalance.bad4() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#52-57) uses a dangerous strict equality: + - balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#54) + +TestContractBalance.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#37-40) uses a dangerous strict equality: + - require(bool)(10000000000000000000 == address(address(this)).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#38) + +TestSolidityKeyword.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#131-133) uses a dangerous strict equality: + - require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#132) + +TestContractBalance.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#32-35) uses a dangerous strict equality: + - require(bool)(address(address(this)).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#33) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_7_6_incorrect_equality_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_7_6_incorrect_equality_sol__0.txt new file mode 100644 index 000000000..506857199 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectStrictEquality_0_7_6_incorrect_equality_sol__0.txt @@ -0,0 +1,36 @@ +ERC20TestBalance.bad1(ERC20Variable) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#25-27) uses a dangerous strict equality: + - require(bool)(erc.balanceOf(msg.sender) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#26) + +TestContractBalance.bad6() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#66-71) uses a dangerous strict equality: + - balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#68) + +ERC20TestBalance.bad0(ERC20Function) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#21-23) uses a dangerous strict equality: + - require(bool)(erc.balanceOf(address(this)) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#22) + +TestContractBalance.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#37-40) uses a dangerous strict equality: + - require(bool)(10000000000000000000 == address(address(this)).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#38) + +TestSolidityKeyword.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#123-125) uses a dangerous strict equality: + - require(bool)(block.timestamp == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#124) + +TestContractBalance.bad3() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#47-50) uses a dangerous strict equality: + - require(bool)(10000000000000000000 == address(this).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#48) + +TestContractBalance.bad4() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#52-57) uses a dangerous strict equality: + - balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#54) + +TestContractBalance.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#32-35) uses a dangerous strict equality: + - require(bool)(address(address(this)).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#33) + +TestSolidityKeyword.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#131-133) uses a dangerous strict equality: + - require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#132) + +TestContractBalance.bad5() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#59-64) uses a dangerous strict equality: + - 10000000000000000000 == balance (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#61) + +TestContractBalance.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#42-45) uses a dangerous strict equality: + - require(bool)(address(this).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#43) + +TestSolidityKeyword.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#127-129) uses a dangerous strict equality: + - require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#128) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectUnaryExpressionDetection_0_4_25_invalid_unary_expression_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectUnaryExpressionDetection_0_4_25_invalid_unary_expression_sol__0.txt new file mode 100644 index 000000000..bd44c2fa3 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectUnaryExpressionDetection_0_4_25_invalid_unary_expression_sol__0.txt @@ -0,0 +1,8 @@ +C.slitherConstructorVariables() (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#1-15) uses an dangerous unary operator: c = (b = + 1) (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#4) + +C.f() (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#6-14) uses an dangerous unary operator: x = + 144444 (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#8) + +C.c (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#4) uses an dangerous unary operator: (b = + 1) + +C.f() (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#6-14) uses an dangerous unary operator: x = (x = + 1) (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#9) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_4_25_shadowing_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_4_25_shadowing_local_variable_sol__0.txt new file mode 100644 index 000000000..913acf4ea --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_4_25_shadowing_local_variable_sol__0.txt @@ -0,0 +1,20 @@ +FurtherExtendedContract.shadowingParent(uint256).x (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows: + - FurtherExtendedContract.x (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#17) (state variable) + - ExtendedContract.x (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#9) (state variable) + - BaseContract.x (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#4) (state variable) + +LocalReturnVariables.shadowedState().state (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#30) shadows: + - LocalReturnVariables.state (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#29) (state variable) + +FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows: + - BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#5) (state variable) + +FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows: + - ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#13) (event) + +FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows: + - FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#20-23) (modifier) + +FurtherExtendedContract.shadowingParent(uint256).z (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows: + - ExtendedContract.z() (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#11) (function) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_5_16_shadowing_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_5_16_shadowing_local_variable_sol__0.txt new file mode 100644 index 000000000..7fcbe83d2 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_5_16_shadowing_local_variable_sol__0.txt @@ -0,0 +1,23 @@ +FurtherExtendedContract.shadowingParent(uint256).x (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows: + - FurtherExtendedContract.x (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#17) (state variable) + - ExtendedContract.x (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#9) (state variable) + - BaseContract.x (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#4) (state variable) + +LocalReturnVariables.shadowedState().state (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#30) shadows: + - LocalReturnVariables.state (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#29) (state variable) + +FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows: + - BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#5) (state variable) + +FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows: + - ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#13) (event) + +FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows: + - FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#20-23) (modifier) + +LocalReturnVariables.shadowedReturn().local_scope_0 (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#34) shadows: + - LocalReturnVariables.shadowedReturn().local (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#33) (return variable) + +FurtherExtendedContract.shadowingParent(uint256).z (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows: + - ExtendedContract.z() (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#11) (function) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_6_11_shadowing_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_6_11_shadowing_local_variable_sol__0.txt new file mode 100644 index 000000000..b4de3265f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_6_11_shadowing_local_variable_sol__0.txt @@ -0,0 +1,21 @@ +LocalReturnVariables.shadowedState().state (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#30) shadows: + - LocalReturnVariables.state (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#29) (state variable) + +FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows: + - BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#5) (state variable) + +FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows: + - ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#13) (event) + +FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows: + - FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#20-23) (modifier) + +FurtherExtendedContract.shadowingParent(uint256).__x (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows: + - FurtherExtendedContract.__x (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#17) (state variable) + +LocalReturnVariables.shadowedReturn().local_scope_0 (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#34) shadows: + - LocalReturnVariables.shadowedReturn().local (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#33) (return variable) + +FurtherExtendedContract.shadowingParent(uint256).z (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows: + - ExtendedContract.z() (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#11) (function) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_7_6_shadowing_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_7_6_shadowing_local_variable_sol__0.txt new file mode 100644 index 000000000..43ecfab68 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_7_6_shadowing_local_variable_sol__0.txt @@ -0,0 +1,21 @@ +LocalReturnVariables.shadowedState().state (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#30) shadows: + - LocalReturnVariables.state (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#29) (state variable) + +FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows: + - BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#5) (state variable) + +FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows: + - ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#13) (event) + +FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows: + - FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#20-23) (modifier) + +FurtherExtendedContract.shadowingParent(uint256).__x (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows: + - FurtherExtendedContract.__x (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#17) (state variable) + +LocalReturnVariables.shadowedReturn().local_scope_0 (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#34) shadows: + - LocalReturnVariables.shadowedReturn().local (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#33) (return variable) + +FurtherExtendedContract.shadowingParent(uint256).z (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows: + - ExtendedContract.z() (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#11) (function) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_4_25_locked_ether_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_4_25_locked_ether_sol__0.txt new file mode 100644 index 000000000..edca6eb2e --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_4_25_locked_ether_sol__0.txt @@ -0,0 +1,5 @@ +Contract locking ether found: + Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#26) has payable functions: + - Locked.receive() (tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#4-6) + But does not have a function to withdraw the ether + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_5_16_locked_ether_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_5_16_locked_ether_sol__0.txt new file mode 100644 index 000000000..d1ff3314b --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_5_16_locked_ether_sol__0.txt @@ -0,0 +1,5 @@ +Contract locking ether found: + Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#26) has payable functions: + - Locked.receive() (tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#4-6) + But does not have a function to withdraw the ether + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_6_11_locked_ether_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_6_11_locked_ether_sol__0.txt new file mode 100644 index 000000000..212015c29 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_6_11_locked_ether_sol__0.txt @@ -0,0 +1,5 @@ +Contract locking ether found: + Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol#26) has payable functions: + - Locked.receive_eth() (tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol#4-6) + But does not have a function to withdraw the ether + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_7_6_locked_ether_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_7_6_locked_ether_sol__0.txt new file mode 100644 index 000000000..8b6ddfa59 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_7_6_locked_ether_sol__0.txt @@ -0,0 +1,5 @@ +Contract locking ether found: + Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol#26) has payable functions: + - Locked.receive_eth() (tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol#4-6) + But does not have a function to withdraw the ether + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_4_25_low_level_calls_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_4_25_low_level_calls_sol__0.txt new file mode 100644 index 000000000..e5e424bb3 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_4_25_low_level_calls_sol__0.txt @@ -0,0 +1,3 @@ +Low level call in Sender.send(address) (tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol#5-7): + - _receiver.call.value(msg.value).gas(7777)() (tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol#6) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_5_16_low_level_calls_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_5_16_low_level_calls_sol__0.txt new file mode 100644 index 000000000..87ad6230d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_5_16_low_level_calls_sol__0.txt @@ -0,0 +1,3 @@ +Low level call in Sender.send(address) (tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol#5-7): + - _receiver.call.value(msg.value).gas(7777)() (tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol#6) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_6_11_low_level_calls_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_6_11_low_level_calls_sol__0.txt new file mode 100644 index 000000000..0e0aa3a06 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_6_11_low_level_calls_sol__0.txt @@ -0,0 +1,3 @@ +Low level call in Sender.send(address) (tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol#5-7): + - _receiver.call.value(msg.value).gas(7777)() (tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol#6) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_7_6_low_level_calls_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_7_6_low_level_calls_sol__0.txt new file mode 100644 index 000000000..e0894ae32 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_LowLevelCalls_0_7_6_low_level_calls_sol__0.txt @@ -0,0 +1,3 @@ +Low level call in Sender.send(address) (tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol#5-7): + - _receiver.call{gas: 7777,value: msg.value}() (tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol#6) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_4_25_MappingDeletion_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_4_25_MappingDeletion_sol__0.txt new file mode 100644 index 000000000..902f96668 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_4_25_MappingDeletion_sol__0.txt @@ -0,0 +1,6 @@ +Lib.deleteSt(Lib.MyStruct[1]) (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#9-11) deletes Lib.MyStruct (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#5-7) which contains a mapping: + -delete st[0] (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#10) + +Balances.deleteBalance(uint256) (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#28-31) deletes Balances.BalancesStruct (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#17-20) which contains a mapping: + -delete stackBalance[idx] (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#30) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_5_16_MappingDeletion_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_5_16_MappingDeletion_sol__0.txt new file mode 100644 index 000000000..fec236e1c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_5_16_MappingDeletion_sol__0.txt @@ -0,0 +1,6 @@ +Lib.deleteSt(Lib.MyStruct[1]) (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#9-11) deletes Lib.MyStruct (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#5-7) which contains a mapping: + -delete st[0] (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#10) + +Balances.deleteBalance(uint256) (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#29-32) deletes Balances.BalancesStruct (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#17-20) which contains a mapping: + -delete stackBalance[idx] (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#31) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_6_11_MappingDeletion_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_6_11_MappingDeletion_sol__0.txt new file mode 100644 index 000000000..7f0372c36 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_6_11_MappingDeletion_sol__0.txt @@ -0,0 +1,6 @@ +Balances.deleteBalance(uint256) (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#29-32) deletes Balances.BalancesStruct (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#17-20) which contains a mapping: + -delete stackBalance[idx] (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#31) + +Lib.deleteSt(Lib.MyStruct[1]) (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#9-11) deletes Lib.MyStruct (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#5-7) which contains a mapping: + -delete st[0] (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_7_6_MappingDeletion_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_7_6_MappingDeletion_sol__0.txt new file mode 100644 index 000000000..f519a046f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MappingDeletionDetection_0_7_6_MappingDeletion_sol__0.txt @@ -0,0 +1,6 @@ +Balances.deleteBalance(uint256) (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#29-32) deletes Balances.BalancesStruct (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#17-20) which contains a mapping: + -delete stackBalance[idx] (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#31) + +Lib.deleteSt(Lib.MyStruct[1]) (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#9-11) deletes Lib.MyStruct (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#5-7) which contains a mapping: + -delete st[0] (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_4_25_missing_events_access_control_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_4_25_missing_events_access_control_sol__0.txt new file mode 100644 index 000000000..ddefb04a7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_4_25_missing_events_access_control_sol__0.txt @@ -0,0 +1,9 @@ +Bug.bad2(address) (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#23-26) should emit an event for: + - owner = newOwner (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#25) + +Bug.bad0() (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#15-17) should emit an event for: + - owner = msg.sender (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#16) + +Bug.bad1(address) (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#19-21) should emit an event for: + - owner = newOwner (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#20) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_5_16_missing_events_access_control_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_5_16_missing_events_access_control_sol__0.txt new file mode 100644 index 000000000..db98d2ad7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_5_16_missing_events_access_control_sol__0.txt @@ -0,0 +1,9 @@ +Bug.bad1(address) (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#19-21) should emit an event for: + - owner = newOwner (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#20) + +Bug.bad0() (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#15-17) should emit an event for: + - owner = msg.sender (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#16) + +Bug.bad2(address) (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#23-26) should emit an event for: + - owner = newOwner (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#25) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_6_11_missing_events_access_control_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_6_11_missing_events_access_control_sol__0.txt new file mode 100644 index 000000000..afd318d25 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_6_11_missing_events_access_control_sol__0.txt @@ -0,0 +1,9 @@ +Bug.bad2(address) (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#23-26) should emit an event for: + - owner = newOwner (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#25) + +Bug.bad1(address) (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#19-21) should emit an event for: + - owner = newOwner (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#20) + +Bug.bad0() (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#15-17) should emit an event for: + - owner = msg.sender (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#16) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_7_6_missing_events_access_control_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_7_6_missing_events_access_control_sol__0.txt new file mode 100644 index 000000000..d77f25818 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsAccessControl_0_7_6_missing_events_access_control_sol__0.txt @@ -0,0 +1,9 @@ +Bug.bad1(address) (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#19-21) should emit an event for: + - owner = newOwner (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#20) + +Bug.bad0() (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#15-17) should emit an event for: + - owner = msg.sender (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#16) + +Bug.bad2(address) (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#23-26) should emit an event for: + - owner = newOwner (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#25) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_4_25_missing_events_arithmetic_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_4_25_missing_events_arithmetic_sol__0.txt new file mode 100644 index 000000000..8963a7674 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_4_25_missing_events_arithmetic_sol__0.txt @@ -0,0 +1,6 @@ +Bug.bad1(int16) (tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#30-32) should emit an event for: + - iprice16 = _price (tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#31) + +Bug.bad0(uint8) (tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#22-24) should emit an event for: + - uprice8 = _price (tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#23) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_5_16_missing_events_arithmetic_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_5_16_missing_events_arithmetic_sol__0.txt new file mode 100644 index 000000000..2e87b44e1 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_5_16_missing_events_arithmetic_sol__0.txt @@ -0,0 +1,6 @@ +Bug.bad1(int16) (tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#30-32) should emit an event for: + - iprice16 = _price (tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#31) + +Bug.bad0(uint8) (tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#22-24) should emit an event for: + - uprice8 = _price (tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#23) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_6_11_missing_events_arithmetic_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_6_11_missing_events_arithmetic_sol__0.txt new file mode 100644 index 000000000..5bb5c5f32 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_6_11_missing_events_arithmetic_sol__0.txt @@ -0,0 +1,6 @@ +Bug.bad0(uint8) (tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#22-24) should emit an event for: + - uprice8 = _price (tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#23) + +Bug.bad1(int16) (tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#30-32) should emit an event for: + - iprice16 = _price (tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#31) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_7_6_missing_events_arithmetic_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_7_6_missing_events_arithmetic_sol__0.txt new file mode 100644 index 000000000..1fb9f8a4b --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingEventsArithmetic_0_7_6_missing_events_arithmetic_sol__0.txt @@ -0,0 +1,6 @@ +Bug.bad1(int16) (tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#30-32) should emit an event for: + - iprice16 = _price (tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#31) + +Bug.bad0(uint8) (tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#22-24) should emit an event for: + - uprice8 = _price (tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#23) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_4_25_unimplemented_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_4_25_unimplemented_interface_sol__0.txt new file mode 100644 index 000000000..d57ab2986 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_4_25_unimplemented_interface_sol__0.txt @@ -0,0 +1,2 @@ +Something (tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol#5-10) should inherit from ISomething (tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol#1-3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_5_16_unimplemented_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_5_16_unimplemented_interface_sol__0.txt new file mode 100644 index 000000000..60f1bc78b --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_5_16_unimplemented_interface_sol__0.txt @@ -0,0 +1,2 @@ +Something (tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol#5-10) should inherit from ISomething (tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol#1-3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_6_11_unimplemented_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_6_11_unimplemented_interface_sol__0.txt new file mode 100644 index 000000000..8a05975fd --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_6_11_unimplemented_interface_sol__0.txt @@ -0,0 +1,2 @@ +Something (tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol#5-10) should inherit from ISomething (tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol#1-3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_7_6_unimplemented_interface_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_7_6_unimplemented_interface_sol__0.txt new file mode 100644 index 000000000..81f48f4dc --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingInheritance_0_7_6_unimplemented_interface_sol__0.txt @@ -0,0 +1,2 @@ +Something (tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol#5-10) should inherit from ISomething (tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol#1-3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_4_25_missing_zero_address_validation_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_4_25_missing_zero_address_validation_sol__0.txt new file mode 100644 index 000000000..2ecb471e9 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_4_25_missing_zero_address_validation_sol__0.txt @@ -0,0 +1,16 @@ +C.bad4_call(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#28) lacks a zero-check on : + - addr.call.value(msg.value)() (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#29) + +C.bad3_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#23) lacks a zero-check on : + - addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#24) + +C.bad2_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#19) lacks a zero-check on : + - addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#20) + +C.bad0_set_owner(address).new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#10) lacks a zero-check on : + - owner = new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#11) + +C.bad1_send(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#14) lacks a zero-check on : + - addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#15) + - addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#16) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_5_16_missing_zero_address_validation_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_5_16_missing_zero_address_validation_sol__0.txt new file mode 100644 index 000000000..0f6616b71 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_5_16_missing_zero_address_validation_sol__0.txt @@ -0,0 +1,16 @@ +C.bad2_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#19) lacks a zero-check on : + - addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#20) + +C.bad4_call(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#28) lacks a zero-check on : + - addr.call.value(msg.value)() (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#29) + +C.bad0_set_owner(address).new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#10) lacks a zero-check on : + - owner = new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#11) + +C.bad3_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#23) lacks a zero-check on : + - addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#24) + +C.bad1_send(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#14) lacks a zero-check on : + - addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#15) + - addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#16) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_6_11_missing_zero_address_validation_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_6_11_missing_zero_address_validation_sol__0.txt new file mode 100644 index 000000000..719ff30c3 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_6_11_missing_zero_address_validation_sol__0.txt @@ -0,0 +1,16 @@ +C.bad2_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#19) lacks a zero-check on : + - addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#20) + +C.bad0_set_owner(address).new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#10) lacks a zero-check on : + - owner = new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#11) + +C.bad1_send(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#14) lacks a zero-check on : + - addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#15) + - addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#16) + +C.bad4_call(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#28) lacks a zero-check on : + - addr.call.value(msg.value)() (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#29) + +C.bad3_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#23) lacks a zero-check on : + - addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#24) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_7_6_missing_zero_address_validation_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_7_6_missing_zero_address_validation_sol__0.txt new file mode 100644 index 000000000..225c1be4d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MissingZeroAddressValidation_0_7_6_missing_zero_address_validation_sol__0.txt @@ -0,0 +1,16 @@ +C.bad1_send(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#14) lacks a zero-check on : + - addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#15) + - addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#16) + +C.bad3_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#23) lacks a zero-check on : + - addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#24) + +C.bad4_call(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#28) lacks a zero-check on : + - addr.call{value: msg.value}() (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#29) + +C.bad2_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#19) lacks a zero-check on : + - addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#20) + +C.bad0_set_owner(address).new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#10) lacks a zero-check on : + - owner = new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#11) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_4_25_modifier_default_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_4_25_modifier_default_sol__0.txt new file mode 100644 index 000000000..365f1f397 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_4_25_modifier_default_sol__0.txt @@ -0,0 +1,3 @@ +Modifier Test.loopsNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#30-41) does not always execute _; or revert +Modifier Test.requireAssertNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#18-22) does not always execute _; or revert +Modifier Test.noResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#2-6) does not always execute _; or revert diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_5_16_modifier_default_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_5_16_modifier_default_sol__0.txt new file mode 100644 index 000000000..5f5a1b5f8 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_5_16_modifier_default_sol__0.txt @@ -0,0 +1,3 @@ +Modifier Test.loopsNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#30-41) does not always execute _; or revert +Modifier Test.requireAssertNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#18-22) does not always execute _; or revert +Modifier Test.noResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#2-6) does not always execute _; or revert diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_6_11_modifier_default_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_6_11_modifier_default_sol__0.txt new file mode 100644 index 000000000..b4d5bf3e4 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_6_11_modifier_default_sol__0.txt @@ -0,0 +1,3 @@ +Modifier Test.loopsNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#30-41) does not always execute _; or revert +Modifier Test.requireAssertNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#18-22) does not always execute _; or revert +Modifier Test.noResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#2-6) does not always execute _; or revert diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_7_6_modifier_default_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_7_6_modifier_default_sol__0.txt new file mode 100644 index 000000000..bba830c3b --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ModifierDefaultDetection_0_7_6_modifier_default_sol__0.txt @@ -0,0 +1,3 @@ +Modifier Test.loopsNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#30-41) does not always execute _; or revert +Modifier Test.requireAssertNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#18-22) does not always execute _; or revert +Modifier Test.noResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#2-6) does not always execute _; or revert diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_4_25_msg_value_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_4_25_msg_value_loop_sol__0.txt new file mode 100644 index 000000000..b694677bd --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_4_25_msg_value_loop_sol__0.txt @@ -0,0 +1,6 @@ +C.bad(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#5-9) use msg.value in a loop: balances[receivers[i]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#7) + +C.bad3(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#21-27) use msg.value in a loop: balances[receivers[j]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#24) + +C.bad2_internal(address) (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#17-19) use msg.value in a loop: balances[a] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#18) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_5_16_msg_value_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_5_16_msg_value_loop_sol__0.txt new file mode 100644 index 000000000..66cd57b2b --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_5_16_msg_value_loop_sol__0.txt @@ -0,0 +1,6 @@ +C.bad3(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#21-27) use msg.value in a loop: balances[receivers[j]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#24) + +C.bad2_internal(address) (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#17-19) use msg.value in a loop: balances[a] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#18) + +C.bad(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#5-9) use msg.value in a loop: balances[receivers[i]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#7) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_6_11_msg_value_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_6_11_msg_value_loop_sol__0.txt new file mode 100644 index 000000000..4ae4ca2a8 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_6_11_msg_value_loop_sol__0.txt @@ -0,0 +1,6 @@ +C.bad2_internal(address) (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#17-19) use msg.value in a loop: balances[a] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#18) + +C.bad(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#5-9) use msg.value in a loop: balances[receivers[i]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#7) + +C.bad3(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#21-27) use msg.value in a loop: balances[receivers[j]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#24) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_7_6_msg_value_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_7_6_msg_value_loop_sol__0.txt new file mode 100644 index 000000000..0ec9098f7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_7_6_msg_value_loop_sol__0.txt @@ -0,0 +1,6 @@ +C.bad2_internal(address) (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#17-19) use msg.value in a loop: balances[a] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#18) + +C.bad3(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#21-27) use msg.value in a loop: balances[receivers[j]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#24) + +C.bad(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#5-9) use msg.value in a loop: balances[receivers[i]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#7) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_8_0_msg_value_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_8_0_msg_value_loop_sol__0.txt new file mode 100644 index 000000000..6f36e2a63 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MsgValueInLoop_0_8_0_msg_value_loop_sol__0.txt @@ -0,0 +1,6 @@ +C.bad2_internal(address) (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#17-19) use msg.value in a loop: balances[a] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#18) + +C.bad3(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#21-27) use msg.value in a loop: balances[receivers[j]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#24) + +C.bad(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#5-9) use msg.value in a loop: balances[receivers[i]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#7) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_4_25_multiple_calls_in_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_4_25_multiple_calls_in_loop_sol__0.txt new file mode 100644 index 000000000..534098851 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_4_25_multiple_calls_in_loop_sol__0.txt @@ -0,0 +1,8 @@ +CallInLoop.bad() (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#24-28) has external calls inside a loop: destinations[i].transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#26) + +CallInLoop.bad2() (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#30-37) has external calls inside a loop: destinations[i].transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#35) + +CallInLoop.bad3_internal(address,uint256) (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#45-47) has external calls inside a loop: a.transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#46) + +CallInLoopBase.bad_base() (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: destinations_base[i].transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#11) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_5_16_multiple_calls_in_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_5_16_multiple_calls_in_loop_sol__0.txt new file mode 100644 index 000000000..ffa813d87 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_5_16_multiple_calls_in_loop_sol__0.txt @@ -0,0 +1,8 @@ +CallInLoop.bad3_internal(address,uint256) (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#45-47) has external calls inside a loop: address(uint160(a)).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#46) + +CallInLoop.bad() (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#24-28) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#26) + +CallInLoop.bad2() (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#30-37) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#35) + +CallInLoopBase.bad_base() (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: address(uint160(destinations_base[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#11) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_6_11_multiple_calls_in_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_6_11_multiple_calls_in_loop_sol__0.txt new file mode 100644 index 000000000..4601b6909 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_6_11_multiple_calls_in_loop_sol__0.txt @@ -0,0 +1,8 @@ +CallInLoop.bad3_internal(address,uint256) (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#45-47) has external calls inside a loop: address(uint160(a)).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#46) + +CallInLoopBase.bad_base() (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: address(uint160(destinations_base[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#11) + +CallInLoop.bad() (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#24-28) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#26) + +CallInLoop.bad2() (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#30-37) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#35) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_7_6_multiple_calls_in_loop_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_7_6_multiple_calls_in_loop_sol__0.txt new file mode 100644 index 000000000..7d67fde52 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MultipleCallsInLoop_0_7_6_multiple_calls_in_loop_sol__0.txt @@ -0,0 +1,8 @@ +CallInLoop.bad() (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#24-28) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#26) + +CallInLoop.bad3_internal(address,uint256) (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#45-47) has external calls inside a loop: address(uint160(a)).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#46) + +CallInLoopBase.bad_base() (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: address(uint160(destinations_base[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#11) + +CallInLoop.bad2() (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#30-37) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#35) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_MultipleConstructorSchemes_0_4_22_multiple_constructor_schemes_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_MultipleConstructorSchemes_0_4_22_multiple_constructor_schemes_sol__0.txt new file mode 100644 index 000000000..7d84e8e24 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_MultipleConstructorSchemes_0_4_22_multiple_constructor_schemes_sol__0.txt @@ -0,0 +1,4 @@ +A (tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol#1-14) contains multiple constructors in the same contract: + - A.constructor() (tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol#3-5) + - A.A() (tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol#6-8) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_naming_convention_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_naming_convention_sol__0.txt new file mode 100644 index 000000000..0419c1b9a --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_naming_convention_sol__0.txt @@ -0,0 +1,32 @@ +Struct naming.test (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#14-16) is not in CapWords + +Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#69) is not in mixedCase + +Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#69) is single letter l, O, or I, which should not be used + +Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#68) is not in mixedCase + +Variable naming.Var_One (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#11) is not in mixedCase + +Constant naming.MY_other_CONSTANT (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#9) is not in UPPER_CASE_WITH_UNDERSCORES + +Contract naming (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#3-48) is not in CapWords + +Enum naming.numbers (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#6) is not in CapWords + +Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#59) is not in mixedCase + +Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#56) is not in mixedCase + +Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#23) is not in CapWords + +Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#68) is single letter l, O, or I, which should not be used + +Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#41-43) is not in mixedCase + +Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#30-33) is not in mixedCase + +Variable T.l (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#67) is single letter l, O, or I, which should not be used + +Parameter naming.setInt(uint256,uint256).Number2 (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#35) is not in mixedCase + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_no_warning_for_public_constants_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_no_warning_for_public_constants_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_naming_convention_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_naming_convention_sol__0.txt new file mode 100644 index 000000000..c5fd1f30f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_naming_convention_sol__0.txt @@ -0,0 +1,32 @@ +Struct naming.test (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#14-16) is not in CapWords + +Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#69) is not in mixedCase + +Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#69) is single letter l, O, or I, which should not be used + +Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#68) is not in mixedCase + +Variable naming.Var_One (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#11) is not in mixedCase + +Constant naming.MY_other_CONSTANT (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#9) is not in UPPER_CASE_WITH_UNDERSCORES + +Contract naming (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#3-48) is not in CapWords + +Enum naming.numbers (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#6) is not in CapWords + +Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#59) is not in mixedCase + +Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#56) is not in mixedCase + +Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#23) is not in CapWords + +Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#68) is single letter l, O, or I, which should not be used + +Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#41-43) is not in mixedCase + +Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#30-33) is not in mixedCase + +Variable T.l (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#67) is single letter l, O, or I, which should not be used + +Parameter naming.setInt(uint256,uint256).Number2 (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#35) is not in mixedCase + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_no_warning_for_public_constants_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_no_warning_for_public_constants_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_naming_convention_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_naming_convention_sol__0.txt new file mode 100644 index 000000000..1bbe28843 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_naming_convention_sol__0.txt @@ -0,0 +1,32 @@ +Struct naming.test (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#14-16) is not in CapWords + +Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#69) is not in mixedCase + +Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#69) is single letter l, O, or I, which should not be used + +Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#68) is not in mixedCase + +Variable naming.Var_One (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#11) is not in mixedCase + +Constant naming.MY_other_CONSTANT (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#9) is not in UPPER_CASE_WITH_UNDERSCORES + +Contract naming (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#3-48) is not in CapWords + +Enum naming.numbers (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#6) is not in CapWords + +Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#59) is not in mixedCase + +Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#56) is not in mixedCase + +Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#23) is not in CapWords + +Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#68) is single letter l, O, or I, which should not be used + +Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#41-43) is not in mixedCase + +Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#30-33) is not in mixedCase + +Variable T.l (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#67) is single letter l, O, or I, which should not be used + +Parameter naming.setInt(uint256,uint256).Number2 (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#35) is not in mixedCase + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_no_warning_for_public_constants_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_no_warning_for_public_constants_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_naming_convention_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_naming_convention_sol__0.txt new file mode 100644 index 000000000..5f560ba51 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_naming_convention_sol__0.txt @@ -0,0 +1,32 @@ +Struct naming.test (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#14-16) is not in CapWords + +Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#69) is not in mixedCase + +Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#69) is single letter l, O, or I, which should not be used + +Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#68) is not in mixedCase + +Variable naming.Var_One (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#11) is not in mixedCase + +Constant naming.MY_other_CONSTANT (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#9) is not in UPPER_CASE_WITH_UNDERSCORES + +Contract naming (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#3-48) is not in CapWords + +Enum naming.numbers (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#6) is not in CapWords + +Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#59) is not in mixedCase + +Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#56) is not in mixedCase + +Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#23) is not in CapWords + +Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#68) is single letter l, O, or I, which should not be used + +Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#41-43) is not in mixedCase + +Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#30-33) is not in mixedCase + +Variable T.l (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#67) is single letter l, O, or I, which should not be used + +Parameter naming.setInt(uint256,uint256).Number2 (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#35) is not in mixedCase + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_no_warning_for_public_constants_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_no_warning_for_public_constants_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_PredeclarationUsageLocal_0_4_25_predeclaration_usage_local_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_PredeclarationUsageLocal_0_4_25_predeclaration_usage_local_sol__0.txt new file mode 100644 index 000000000..264e41f14 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_PredeclarationUsageLocal_0_4_25_predeclaration_usage_local_sol__0.txt @@ -0,0 +1,10 @@ +Variable 'C.f(uint256).i (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#8)' in C.f(uint256) (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#2-17) potentially used before declaration: i -- (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#14) + +Variable 'C.f(uint256).i (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#8)' in C.f(uint256) (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#2-17) potentially used before declaration: x += i (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#15) + +Variable 'C.f(uint256).i (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#8)' in C.f(uint256) (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#2-17) potentially used before declaration: i > 0 (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#14) + +Variable 'C.f(uint256).i (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#8)' in C.f(uint256) (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#2-17) potentially used before declaration: i = 10 (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#14) + +Variable 'C.f(uint256).x (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#5)' in C.f(uint256) (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#2-17) potentially used before declaration: y = x + 9 + z (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#4) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ProtectedVariables_0_8_2_comment_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ProtectedVariables_0_8_2_comment_sol__0.txt new file mode 100644 index 000000000..2086c6e7f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ProtectedVariables_0_8_2_comment_sol__0.txt @@ -0,0 +1,4 @@ +Internal.buggy() (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#47-49) should have Internal.onlyOwner() (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#42-45) to protect Internal.owner (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#38) + +ReentrancyAndWrite.set_not_protected() (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#31-33) should have ReentrancyAndWrite.onlyOwner() (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#11-14) to protect ReentrancyAndWrite.external_contract (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#9) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_PublicMappingNested_0_4_25_public_mappings_nested_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_PublicMappingNested_0_4_25_public_mappings_nested_sol__0.txt new file mode 100644 index 000000000..74e376f8f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_PublicMappingNested_0_4_25_public_mappings_nested_sol__0.txt @@ -0,0 +1,2 @@ +Bug.testMapping (tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol#14) is a public mapping with nested variables + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_4_25_redundant_statements_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_4_25_redundant_statements_sol__0.txt new file mode 100644 index 000000000..f204ff512 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_4_25_redundant_statements_sol__0.txt @@ -0,0 +1,12 @@ +Redundant expression "bool (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#7)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18) + +Redundant expression "uint256 (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#12)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18) + +Redundant expression "test (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#14)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18) + +Redundant expression "RedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#8)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18) + +Redundant expression "uint256 (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#6)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18) + +Redundant expression "assert(bool) (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#13)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_5_16_redundant_statements_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_5_16_redundant_statements_sol__0.txt new file mode 100644 index 000000000..f70402cb9 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_5_16_redundant_statements_sol__0.txt @@ -0,0 +1,12 @@ +Redundant expression "assert(bool) (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#13)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18) + +Redundant expression "bool (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#7)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18) + +Redundant expression "uint256 (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#12)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18) + +Redundant expression "uint256 (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#6)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18) + +Redundant expression "RedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#8)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18) + +Redundant expression "test (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#14)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_6_11_redundant_statements_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_6_11_redundant_statements_sol__0.txt new file mode 100644 index 000000000..2264d01e5 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_6_11_redundant_statements_sol__0.txt @@ -0,0 +1,12 @@ +Redundant expression "uint256 (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#12)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18) + +Redundant expression "bool (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#7)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18) + +Redundant expression "RedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#8)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18) + +Redundant expression "uint256 (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#6)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18) + +Redundant expression "test (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#14)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18) + +Redundant expression "assert(bool) (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#13)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_7_6_redundant_statements_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_7_6_redundant_statements_sol__0.txt new file mode 100644 index 000000000..915421b3f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_RedundantStatements_0_7_6_redundant_statements_sol__0.txt @@ -0,0 +1,12 @@ +Redundant expression "uint256 (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#12)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18) + +Redundant expression "test (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#14)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18) + +Redundant expression "assert(bool) (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#13)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18) + +Redundant expression "RedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#8)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18) + +Redundant expression "bool (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#7)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18) + +Redundant expression "uint256 (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#6)" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_4_25_reentrancy_benign_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_4_25_reentrancy_benign_sol__0.txt new file mode 100644 index 000000000..fdc46f6af --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_4_25_reentrancy_benign_sol__0.txt @@ -0,0 +1,50 @@ +Reentrancy in ReentrancyBenign.bad1(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#23-27): + External calls: + - success = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#24) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#26) + +Reentrancy in ReentrancyBenign.bad0() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#16-21): + External calls: + - ! (msg.sender.call()) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#17) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#20) + +Reentrancy in ReentrancyBenign.bad4(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#46-51): + External calls: + - externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#47) + - address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#60) + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#48) + - address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#64) + External calls sending eth: + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#48) + - address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#64) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#49) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#68) + +Reentrancy in ReentrancyBenign.bad3(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#40-44): + External calls: + - externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#41) + - address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#60) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#42) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#68) + +Reentrancy in ReentrancyBenign.bad2(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#29-38): + External calls: + - success = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#30) + - address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#32) + External calls sending eth: + - address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#32) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#33) + +Reentrancy in ReentrancyBenign.bad5(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#53-57): + External calls: + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#54) + - address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#64) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#55) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#68) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_5_16_reentrancy_benign_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_5_16_reentrancy_benign_sol__0.txt new file mode 100644 index 000000000..744eccc92 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_5_16_reentrancy_benign_sol__0.txt @@ -0,0 +1,50 @@ +Reentrancy in ReentrancyBenign.bad3(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#41-45): + External calls: + - externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#42) + - address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#61) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#43) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#69) + +Reentrancy in ReentrancyBenign.bad0() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#16-22): + External calls: + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#17) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#21) + +Reentrancy in ReentrancyBenign.bad5(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#54-58): + External calls: + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#55) + - address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#65) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#56) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#69) + +Reentrancy in ReentrancyBenign.bad4(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#47-52): + External calls: + - externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#48) + - address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#61) + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#49) + - address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#65) + External calls sending eth: + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#49) + - address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#65) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#50) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#69) + +Reentrancy in ReentrancyBenign.bad1(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#24-28): + External calls: + - (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#25) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#27) + +Reentrancy in ReentrancyBenign.bad2(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#30-39): + External calls: + - (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#31) + - address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#33) + External calls sending eth: + - address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#33) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#34) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_6_11_reentrancy_benign_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_6_11_reentrancy_benign_sol__0.txt new file mode 100644 index 000000000..400c1c00d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_6_11_reentrancy_benign_sol__0.txt @@ -0,0 +1,50 @@ +Reentrancy in ReentrancyBenign.bad4(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#47-52): + External calls: + - externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#48) + - address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#61) + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#49) + - address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#65) + External calls sending eth: + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#49) + - address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#65) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#50) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#69) + +Reentrancy in ReentrancyBenign.bad3(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#41-45): + External calls: + - externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#42) + - address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#61) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#43) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#69) + +Reentrancy in ReentrancyBenign.bad2(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#30-39): + External calls: + - (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#31) + - address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#33) + External calls sending eth: + - address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#33) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#34) + +Reentrancy in ReentrancyBenign.bad1(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#24-28): + External calls: + - (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#25) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#27) + +Reentrancy in ReentrancyBenign.bad5(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#54-58): + External calls: + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#55) + - address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#65) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#56) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#69) + +Reentrancy in ReentrancyBenign.bad0() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#16-22): + External calls: + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#17) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#21) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_7_6_reentrancy_benign_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_7_6_reentrancy_benign_sol__0.txt new file mode 100644 index 000000000..5339f8c4a --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyBenign_0_7_6_reentrancy_benign_sol__0.txt @@ -0,0 +1,50 @@ +Reentrancy in ReentrancyBenign.bad3(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#41-45): + External calls: + - externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#42) + - address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#61) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#43) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#69) + +Reentrancy in ReentrancyBenign.bad2(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#30-39): + External calls: + - (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#31) + - address(target).call{value: 1000}() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#33) + External calls sending eth: + - address(target).call{value: 1000}() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#33) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#34) + +Reentrancy in ReentrancyBenign.bad5(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#54-58): + External calls: + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#55) + - address(target).call{value: 1}() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#65) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#56) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#69) + +Reentrancy in ReentrancyBenign.bad4(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#47-52): + External calls: + - externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#48) + - address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#61) + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#49) + - address(target).call{value: 1}() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#65) + External calls sending eth: + - ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#49) + - address(target).call{value: 1}() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#65) + State variables written after the call(s): + - varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#50) + - anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#69) + +Reentrancy in ReentrancyBenign.bad1(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#24-28): + External calls: + - (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#25) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#27) + +Reentrancy in ReentrancyBenign.bad0() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#16-22): + External calls: + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#17) + State variables written after the call(s): + - counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#21) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_DAO_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_DAO_sol__0.txt new file mode 100644 index 000000000..2d6c2b820 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_DAO_sol__0.txt @@ -0,0 +1,72 @@ +Reentrancy in TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#318-332): + External calls: + - extraBalance.balance >= extraBalance.accumulatedInput() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#321) + - extraBalance.payOut(address(this),extraBalance.accumulatedInput()) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#322) + - msg.sender.call.value(weiGiven[msg.sender])() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#325) + External calls sending eth: + - msg.sender.call.value(weiGiven[msg.sender])() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#325) + State variables written after the call(s): + - weiGiven[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#329) + TokenCreationInterface.weiGiven (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#251) can be used in cross function reentrancies: + - TokenCreation.createTokenProxy(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#299-316) + - TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#318-332) + +Reentrancy in DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#853-937): + External calls: + - ! isRecipientAllowed(p.recipient) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#881) + - allowedRecipients[_recipient] || (_recipient == address(extraBalance) && totalRewardToken > extraBalance.accumulatedInput()) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1159-1163) + - ! p.recipient.call.value(p.amount)(_transactionData) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#915) + External calls sending eth: + - ! p.creator.send(p.proposalDeposit) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#904) + - ! p.recipient.call.value(p.amount)(_transactionData) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#915) + State variables written after the call(s): + - p.proposalPassed = true (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#918) + DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies: + - DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#702-726) + - DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#809-817) + - DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#940-945) + - DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#853-937) + - DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1204-1206) + - DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1208-1218) + - DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#741-806) + - DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1199-1202) + - DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#394) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#947-1020) + - DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#820-850) + - closeProposal(_proposalID) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#933) + - p.open = false (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#944) + DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies: + - DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#702-726) + - DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#809-817) + - DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#940-945) + - DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#853-937) + - DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1204-1206) + - DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1208-1218) + - DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#741-806) + - DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1199-1202) + - DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#394) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#947-1020) + - DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#820-850) + - rewardToken[address(this)] += p.amount (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#928) + DAOInterface.rewardToken (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#410) can be used in cross function reentrancies: + - DAO.changeProposalDeposit(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1139-1146) + - DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#853-937) + - DAO.minQuorum(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1174-1178) + - DAO.newContract(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1022-1034) + - DAO.retrieveDAOReward(bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1037-1057) + - DAOInterface.rewardToken (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#410) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#947-1020) + - closeProposal(_proposalID) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#933) + - sumOfProposalDeposits -= p.proposalDeposit (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#943) + DAOInterface.sumOfProposalDeposits (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#436) can be used in cross function reentrancies: + - DAO.actualBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1169-1171) + - DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#940-945) + - DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#741-806) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#947-1020) + - totalRewardToken += p.amount (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#929) + DAOInterface.totalRewardToken (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#412) can be used in cross function reentrancies: + - DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#853-937) + - DAO.isRecipientAllowed(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1158-1167) + - DAO.retrieveDAOReward(bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1037-1057) + - DAOInterface.totalRewardToken (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#412) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_reentrancy_indirect_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_reentrancy_indirect_sol__0.txt new file mode 100644 index 000000000..4562e1bd7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_reentrancy_indirect_sol__0.txt @@ -0,0 +1,15 @@ +Reentrancy in Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#22-29): + External calls: + - require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender])) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#24) + External calls sending eth: + - msg.sender.transfer(eth_deposed[token][msg.sender]) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#23) + State variables written after the call(s): + - eth_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#26) + Reentrancy.eth_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#10) can be used in cross function reentrancies: + - Reentrancy.deposit_eth(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#13-15) + - Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#22-29) + - token_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#27) + Reentrancy.token_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#11) can be used in cross function reentrancies: + - Reentrancy.deposit_token(address,uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#17-20) + - Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#22-29) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_reentrancy_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_reentrancy_sol__0.txt new file mode 100644 index 000000000..81143018c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_4_25_reentrancy_sol__0.txt @@ -0,0 +1,32 @@ +Reentrancy in Reentrancy.withdrawBalance_nested() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#74-80): + External calls: + - msg.sender.call.value(amount / 2)() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#77) + State variables written after the call(s): + - userBalance[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#78) + Reentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#4) can be used in cross function reentrancies: + - Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#10-12) + - Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#15-22) + - Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#6-8) + - Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#24-31) + - Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#33-41) + - Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#43-50) + - Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#52-60) + - Reentrancy.withdrawBalance_fixed_4() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#61-72) + - Reentrancy.withdrawBalance_nested() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#74-80) + +Reentrancy in Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#24-31): + External calls: + - ! (msg.sender.call.value(userBalance[msg.sender])()) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#27) + State variables written after the call(s): + - userBalance[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#30) + Reentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#4) can be used in cross function reentrancies: + - Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#10-12) + - Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#15-22) + - Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#6-8) + - Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#24-31) + - Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#33-41) + - Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#43-50) + - Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#52-60) + - Reentrancy.withdrawBalance_fixed_4() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#61-72) + - Reentrancy.withdrawBalance_nested() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#74-80) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_5_16_reentrancy_indirect_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_5_16_reentrancy_indirect_sol__0.txt new file mode 100644 index 000000000..eea2c4711 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_5_16_reentrancy_indirect_sol__0.txt @@ -0,0 +1,15 @@ +Reentrancy in Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#22-29): + External calls: + - require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender])) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#24) + External calls sending eth: + - msg.sender.transfer(eth_deposed[token][msg.sender]) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#23) + State variables written after the call(s): + - eth_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#26) + Reentrancy.eth_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#10) can be used in cross function reentrancies: + - Reentrancy.deposit_eth(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#13-15) + - Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#22-29) + - token_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#27) + Reentrancy.token_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#11) can be used in cross function reentrancies: + - Reentrancy.deposit_token(address,uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#17-20) + - Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#22-29) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_5_16_reentrancy_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_5_16_reentrancy_sol__0.txt new file mode 100644 index 000000000..d77726404 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_5_16_reentrancy_sol__0.txt @@ -0,0 +1,28 @@ +Reentrancy in Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#25-33): + External calls: + - (ret,mem) = msg.sender.call.value(userBalance[msg.sender])() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#28) + State variables written after the call(s): + - userBalance[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#32) + Reentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#4) can be used in cross function reentrancies: + - Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#10-12) + - Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#15-23) + - Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#6-8) + - Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#25-33) + - Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#35-44) + - Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#46-53) + - Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#55-64) + +Reentrancy in Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#55-64): + External calls: + - (ret,mem) = msg.sender.call.value(amount)() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#60) + State variables written after the call(s): + - userBalance[msg.sender] = amount (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#62) + Reentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#4) can be used in cross function reentrancies: + - Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#10-12) + - Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#15-23) + - Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#6-8) + - Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#25-33) + - Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#35-44) + - Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#46-53) + - Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#55-64) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_6_11_reentrancy_indirect_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_6_11_reentrancy_indirect_sol__0.txt new file mode 100644 index 000000000..c4cda5f34 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_6_11_reentrancy_indirect_sol__0.txt @@ -0,0 +1,15 @@ +Reentrancy in Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#22-29): + External calls: + - require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender])) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#24) + External calls sending eth: + - msg.sender.transfer(eth_deposed[token][msg.sender]) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#23) + State variables written after the call(s): + - eth_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#26) + Reentrancy.eth_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#10) can be used in cross function reentrancies: + - Reentrancy.deposit_eth(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#13-15) + - Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#22-29) + - token_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#27) + Reentrancy.token_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#11) can be used in cross function reentrancies: + - Reentrancy.deposit_token(address,uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#17-20) + - Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#22-29) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_6_11_reentrancy_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_6_11_reentrancy_sol__0.txt new file mode 100644 index 000000000..a3e4ec83d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_6_11_reentrancy_sol__0.txt @@ -0,0 +1,28 @@ +Reentrancy in Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#55-64): + External calls: + - (ret,mem) = msg.sender.call.value(amount)() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#60) + State variables written after the call(s): + - userBalance[msg.sender] = amount (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#62) + Reentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#4) can be used in cross function reentrancies: + - Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#10-12) + - Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#15-23) + - Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#6-8) + - Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#25-33) + - Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#35-44) + - Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#46-53) + - Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#55-64) + +Reentrancy in Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#25-33): + External calls: + - (ret,mem) = msg.sender.call.value(userBalance[msg.sender])() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#28) + State variables written after the call(s): + - userBalance[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#32) + Reentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#4) can be used in cross function reentrancies: + - Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#10-12) + - Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#15-23) + - Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#6-8) + - Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#25-33) + - Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#35-44) + - Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#46-53) + - Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#55-64) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_7_6_reentrancy_indirect_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_7_6_reentrancy_indirect_sol__0.txt new file mode 100644 index 000000000..2be2ab3bb --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_7_6_reentrancy_indirect_sol__0.txt @@ -0,0 +1,15 @@ +Reentrancy in Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#22-29): + External calls: + - require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender])) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#24) + External calls sending eth: + - msg.sender.transfer(eth_deposed[token][msg.sender]) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#23) + State variables written after the call(s): + - eth_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#26) + Reentrancy.eth_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#10) can be used in cross function reentrancies: + - Reentrancy.deposit_eth(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#13-15) + - Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#22-29) + - token_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#27) + Reentrancy.token_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#11) can be used in cross function reentrancies: + - Reentrancy.deposit_token(address,uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#17-20) + - Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#22-29) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_7_6_reentrancy_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_7_6_reentrancy_sol__0.txt new file mode 100644 index 000000000..04098bd3f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_7_6_reentrancy_sol__0.txt @@ -0,0 +1,28 @@ +Reentrancy in Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#55-64): + External calls: + - (ret,mem) = msg.sender.call{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#60) + State variables written after the call(s): + - userBalance[msg.sender] = amount (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#62) + Reentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#4) can be used in cross function reentrancies: + - Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#10-12) + - Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#15-23) + - Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#6-8) + - Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#25-33) + - Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#35-44) + - Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#46-53) + - Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#55-64) + +Reentrancy in Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#25-33): + External calls: + - (ret,mem) = msg.sender.call{value: userBalance[msg.sender]}() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#28) + State variables written after the call(s): + - userBalance[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#32) + Reentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#4) can be used in cross function reentrancies: + - Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#10-12) + - Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#15-23) + - Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#6-8) + - Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#25-33) + - Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#35-44) + - Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#46-53) + - Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#55-64) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_8_10_reentrancy_filtered_comments_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_8_10_reentrancy_filtered_comments_sol__0.txt new file mode 100644 index 000000000..4485754d3 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_8_10_reentrancy_filtered_comments_sol__0.txt @@ -0,0 +1,9 @@ +Reentrancy in TestWithBug.withdraw(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#8-12): + External calls: + - Receiver(msg.sender).send_funds{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#10) + State variables written after the call(s): + - balances[msg.sender] -= amount (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#11) + TestWithBug.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#6) can be used in cross function reentrancies: + - TestWithBug.withdraw(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#8-12) + - TestWithBug.withdrawFiltered(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#15-19) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_8_10_reentrancy_with_non_reentrant_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_8_10_reentrancy_with_non_reentrant_sol__0.txt new file mode 100644 index 000000000..ab510d0e5 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEth_0_8_10_reentrancy_with_non_reentrant_sol__0.txt @@ -0,0 +1,32 @@ +Reentrancy in TestWithBugInternal.withdraw_internal(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#62-66): + External calls: + - Receiver(msg.sender).send_funds{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#64) + State variables written after the call(s): + - balances[msg.sender] -= amount (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#65) + TestWithBugInternal.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#52) can be used in cross function reentrancies: + - TestWithBugInternal.withdraw_all_internal() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#72-76) + +Reentrancy in TestWithBug.withdraw(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#13-17): + External calls: + - Receiver(msg.sender).send_funds{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#15) + State variables written after the call(s): + - balances[msg.sender] -= amount (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#16) + TestWithBug.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#7) can be used in cross function reentrancies: + - TestWithBug.withdraw_all() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#19-23) + +Reentrancy in TestBugWithPublicVariable.withdraw_internal(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#122-126): + External calls: + - Receiver(msg.sender).send_funds{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#124) + State variables written after the call(s): + - balances[msg.sender] -= amount (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#125) + TestBugWithPublicVariable.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#112) can be used in cross function reentrancies: + - TestBugWithPublicVariable.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#112) + +Reentrancy in TestWithBugNonReentrantRead.withdraw(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#138-142): + External calls: + - Receiver(msg.sender).send_funds{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#140) + State variables written after the call(s): + - balances[msg.sender] -= amount (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#141) + TestWithBugNonReentrantRead.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#132) can be used in cross function reentrancies: + - TestWithBugNonReentrantRead.read() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#146-149) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_5_16_reentrancy_events_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_5_16_reentrancy_events_sol__0.txt new file mode 100644 index 000000000..ffee9b383 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_5_16_reentrancy_events_sol__0.txt @@ -0,0 +1,6 @@ +Reentrancy in Test.bug(C) (tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol#14-17): + External calls: + - c.f() (tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol#15) + Event emitted after the call(s): + - E() (tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol#16) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_6_11_reentrancy_events_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_6_11_reentrancy_events_sol__0.txt new file mode 100644 index 000000000..430371f7d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_6_11_reentrancy_events_sol__0.txt @@ -0,0 +1,6 @@ +Reentrancy in Test.bug(C) (tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol#14-17): + External calls: + - c.f() (tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol#15) + Event emitted after the call(s): + - E() (tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol#16) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_7_6_reentrancy_events_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_7_6_reentrancy_events_sol__0.txt new file mode 100644 index 000000000..ad082c3a5 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyEvent_0_7_6_reentrancy_events_sol__0.txt @@ -0,0 +1,6 @@ +Reentrancy in Test.bug(C) (tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol#14-17): + External calls: + - c.f() (tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol#15) + Event emitted after the call(s): + - E() (tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol#16) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_4_25_DAO_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_4_25_DAO_sol__0.txt new file mode 100644 index 000000000..1babf5659 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_4_25_DAO_sol__0.txt @@ -0,0 +1,171 @@ +Reentrancy in DAO.retrieveDAOReward(bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1037-1057): + External calls: + - reward = (rewardToken[msg.sender] * DAOrewardAccount.accumulatedInput()) / totalRewardToken - DAOpaidOut[msg.sender] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1044-1046) + - ! DAOrewardAccount.payOut(dao.rewardAccount(),reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1048) + - ! DAOrewardAccount.payOut(dao,reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1052) + State variables written after the call(s): + - DAOpaidOut[msg.sender] += reward (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1055) + DAOInterface.DAOpaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#423) can be used in cross function reentrancies: + - DAOInterface.DAOpaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#423) + - DAO.newContract(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1022-1034) + - DAO.retrieveDAOReward(bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1037-1057) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + +Reentrancy in DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074): + External calls: + - reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1068-1069) + - ! rewardAccount.payOut(_account,reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1070) + State variables written after the call(s): + - paidOut[_account] += reward (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1072) + DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) can be used in cross function reentrancies: + - DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - DAO.transferPaidOut(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1124-1136) + - DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074) + +Reentrancy in DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020): + External calls: + - p.splitData[0].newDAO = createNewDAO(_newCurator) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#974) + - daoCreator.createDAO(_newCurator,0,0,now + splitExecutionPeriod) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1196) + - withdrawRewardFor(msg.sender) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1015) + - (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1065) + - reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1068-1069) + - ! rewardAccount.payOut(_account,reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1070) + State variables written after the call(s): + - balances[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1017) + TokenInterface.balances (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#41) can be used in cross function reentrancies: + - Token.balanceOf(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#95-97) + - TokenCreation.createTokenProxy(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#299-316) + - TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#318-332) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - Token.transfer(address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#99-108) + - Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#110-128) + - DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850) + - paidOut[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1018) + DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) can be used in cross function reentrancies: + - DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - DAO.transferPaidOut(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1124-1136) + - DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074) + - totalSupply -= balances[msg.sender] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1016) + TokenInterface.totalSupply (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#45) can be used in cross function reentrancies: + - TokenCreation.createTokenProxy(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#299-316) + - DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#853-937) + - DAO.minQuorum(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1174-1178) + - TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#318-332) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - TokenInterface.totalSupply (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#45) + - DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074) + +Reentrancy in DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020): + External calls: + - p.splitData[0].newDAO = createNewDAO(_newCurator) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#974) + - daoCreator.createDAO(_newCurator,0,0,now + splitExecutionPeriod) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1196) + State variables written after the call(s): + - p.splitData[0].splitBalance = actualBalance() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#981) + DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies: + - DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#702-726) + - DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#809-817) + - DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#940-945) + - DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#853-937) + - DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1204-1206) + - DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1208-1218) + - DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#741-806) + - DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1199-1202) + - DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850) + - p.splitData[0].rewardToken = rewardToken[address(this)] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#982) + DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies: + - DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#702-726) + - DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#809-817) + - DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#940-945) + - DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#853-937) + - DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1204-1206) + - DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1208-1218) + - DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#741-806) + - DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1199-1202) + - DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850) + - p.splitData[0].totalSupply = totalSupply (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#983) + DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies: + - DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#702-726) + - DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#809-817) + - DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#940-945) + - DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#853-937) + - DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1204-1206) + - DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1208-1218) + - DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#741-806) + - DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1199-1202) + - DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850) + - p.proposalPassed = true (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#984) + DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies: + - DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#702-726) + - DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#809-817) + - DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#940-945) + - DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#853-937) + - DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1204-1206) + - DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1208-1218) + - DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#741-806) + - DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1199-1202) + - DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850) + +Reentrancy in DAO.transferFromWithoutReward(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1112-1121): + External calls: + - ! withdrawRewardFor(_from) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1118) + - (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1065) + - reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1068-1069) + - ! rewardAccount.payOut(_account,reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1070) + State variables written after the call(s): + - transferFrom(_from,_to,_value) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1120) + - balances[_to] += _amount (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#120) + - balances[_from] -= _amount (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#121) + TokenInterface.balances (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#41) can be used in cross function reentrancies: + - Token.balanceOf(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#95-97) + - TokenCreation.createTokenProxy(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#299-316) + - TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#318-332) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - Token.transfer(address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#99-108) + - Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#110-128) + - DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850) + - transferFrom(_from,_to,_value) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1120) + - paidOut[_from] -= transferPaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1133) + - paidOut[_to] += transferPaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1134) + DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) can be used in cross function reentrancies: + - DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - DAO.transferPaidOut(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1124-1136) + - DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074) + +Reentrancy in DAO.transferWithoutReward(address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1091-1095): + External calls: + - ! getMyReward() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1092) + - (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1065) + - reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1068-1069) + - ! rewardAccount.payOut(_account,reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1070) + State variables written after the call(s): + - transfer(_to,_value) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1094) + - balances[msg.sender] -= _amount (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#101) + - balances[_to] += _amount (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#102) + TokenInterface.balances (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#41) can be used in cross function reentrancies: + - Token.balanceOf(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#95-97) + - TokenCreation.createTokenProxy(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#299-316) + - TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#318-332) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - Token.transfer(address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#99-108) + - Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#110-128) + - DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850) + - transfer(_to,_value) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1094) + - paidOut[_from] -= transferPaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1133) + - paidOut[_to] += transferPaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1134) + DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) can be used in cross function reentrancies: + - DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) + - DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020) + - DAO.transferPaidOut(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1124-1136) + - DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_4_25_reentrancy_write_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_4_25_reentrancy_write_sol__0.txt new file mode 100644 index 000000000..fb9615c09 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_4_25_reentrancy_write_sol__0.txt @@ -0,0 +1,25 @@ +Reentrancy in ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#16-22): + External calls: + - ! (msg.sender.call()) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#18) + State variables written after the call(s): + - notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#21) + ReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#4) can be used in cross function reentrancies: + - ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#16-22) + - ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#24-29) + - ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#7-14) + - ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#31-37) + +Reentrancy in ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#24-29): + External calls: + - success = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#26) + - bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#28) + - ! (msg.sender.call()) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#18) + State variables written after the call(s): + - bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#28) + - notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#21) + ReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#4) can be used in cross function reentrancies: + - ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#16-22) + - ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#24-29) + - ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#7-14) + - ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#31-37) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_5_16_no_reentrancy_staticcall_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_5_16_no_reentrancy_staticcall_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_5_16_reentrancy_write_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_5_16_reentrancy_write_sol__0.txt new file mode 100644 index 000000000..d1532be91 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_5_16_reentrancy_write_sol__0.txt @@ -0,0 +1,25 @@ +Reentrancy in ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#16-23): + External calls: + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#18) + State variables written after the call(s): + - notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#22) + ReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#4) can be used in cross function reentrancies: + - ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#16-23) + - ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#25-30) + - ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#7-14) + - ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#32-39) + +Reentrancy in ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#25-30): + External calls: + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#27) + - bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#29) + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#18) + State variables written after the call(s): + - bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#29) + - notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#22) + ReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#4) can be used in cross function reentrancies: + - ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#16-23) + - ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#25-30) + - ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#7-14) + - ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#32-39) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_6_11_no_reentrancy_staticcall_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_6_11_no_reentrancy_staticcall_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_6_11_reentrancy_write_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_6_11_reentrancy_write_sol__0.txt new file mode 100644 index 000000000..e4edf64f8 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_6_11_reentrancy_write_sol__0.txt @@ -0,0 +1,25 @@ +Reentrancy in ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#16-23): + External calls: + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#18) + State variables written after the call(s): + - notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#22) + ReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#4) can be used in cross function reentrancies: + - ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#16-23) + - ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#25-30) + - ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#7-14) + - ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#32-39) + +Reentrancy in ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#25-30): + External calls: + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#27) + - bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#29) + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#18) + State variables written after the call(s): + - bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#29) + - notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#22) + ReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#4) can be used in cross function reentrancies: + - ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#16-23) + - ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#25-30) + - ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#7-14) + - ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#32-39) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_7_6_no_reentrancy_staticcall_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_7_6_no_reentrancy_staticcall_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_7_6_reentrancy_write_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_7_6_reentrancy_write_sol__0.txt new file mode 100644 index 000000000..ad043d2f8 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_7_6_reentrancy_write_sol__0.txt @@ -0,0 +1,25 @@ +Reentrancy in ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#20-27): + External calls: + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#22) + State variables written after the call(s): + - notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#26) + ReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#8) can be used in cross function reentrancies: + - ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#20-27) + - ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#29-34) + - ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#11-18) + - ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#36-43) + +Reentrancy in ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#29-34): + External calls: + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#31) + - bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#33) + - (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#22) + State variables written after the call(s): + - bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#33) + - notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#26) + ReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#8) can be used in cross function reentrancies: + - ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#20-27) + - ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#29-34) + - ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#11-18) + - ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#36-43) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_8_2_comment_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReentrancyReadBeforeWritten_0_8_2_comment_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReusedBaseConstructor_0_4_21_reused_base_constructor_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReusedBaseConstructor_0_4_21_reused_base_constructor_sol__0.txt new file mode 100644 index 000000000..d3e7d064c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReusedBaseConstructor_0_4_21_reused_base_constructor_sol__0.txt @@ -0,0 +1,24 @@ +E (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#26-30) gives base constructor C.C(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#15-17) arguments more than once in inheritance hierarchy: + - From E (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#26-30) constructor definition + - From D (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#20-24) constructor definition + +E (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#26-30) gives base constructor A.A(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy: + - From C (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#14-18) constructor definition + - From B (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#8-12) constructor definition + +F (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#33-38) gives base constructor A.A(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy: + - From F (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#33-38) constructor definition + - From B (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#8-12) constructor definition + +D (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#20-24) gives base constructor A.A(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy: + - From C (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#14-18) constructor definition + - From B (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#8-12) constructor definition + +C (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#14-18) gives base constructor A.A(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy: + - From C (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#14-18) constructor definition + - From B (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#8-12) constructor definition + +E (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#26-30) gives base constructor B.B(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#9-11) arguments more than once in inheritance hierarchy: + - From E (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#26-30) constructor definition + - From D (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#20-24) constructor definition + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ReusedBaseConstructor_0_4_25_reused_base_constructor_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ReusedBaseConstructor_0_4_25_reused_base_constructor_sol__0.txt new file mode 100644 index 000000000..66c80dbbb --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ReusedBaseConstructor_0_4_25_reused_base_constructor_sol__0.txt @@ -0,0 +1,35 @@ +D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) gives base constructor A.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy: + - From C (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#14-18) constructor definition + - From B (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#8-12) constructor definition + +C (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#14-18) gives base constructor A.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy: + - From C (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#14-18) constructor definition + - From B (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#8-12) constructor definition + +E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) gives base constructor C.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#15-17) arguments more than once in inheritance hierarchy: + - From E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) constructor definition + - From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) contract definition + - From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) constructor definition + +D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) gives base constructor B.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#9-11) arguments more than once in inheritance hierarchy: + - From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) contract definition + - From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) constructor definition + +D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) gives base constructor C.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#15-17) arguments more than once in inheritance hierarchy: + - From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) contract definition + - From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) constructor definition + +F (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#33-38) gives base constructor A.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy: + - From F (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#33-38) constructor definition + - From B (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#8-12) constructor definition + +E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) gives base constructor B.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#9-11) arguments more than once in inheritance hierarchy: + - From E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) contract definition + - From E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) constructor definition + - From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) contract definition + - From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) constructor definition + +E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) gives base constructor A.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy: + - From C (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#14-18) constructor definition + - From B (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#8-12) constructor definition + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_4_25_right_to_left_override_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_4_25_right_to_left_override_sol__0.txt new file mode 100644 index 000000000..ac0099d48 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_4_25_right_to_left_override_sol__0.txt @@ -0,0 +1,3 @@ +tests/e2e/detectors/test_data/rtlo/0.4.25/right_to_left_override.sol contains a unicode right-to-left-override character at byte offset 96: + - b' test1(/*A\xe2\x80\xae/*B*/2 , 1/*\xe2\x80\xad' + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_5_16_right_to_left_override_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_5_16_right_to_left_override_sol__0.txt new file mode 100644 index 000000000..3c5060b6c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_5_16_right_to_left_override_sol__0.txt @@ -0,0 +1,3 @@ +tests/e2e/detectors/test_data/rtlo/0.5.16/right_to_left_override.sol contains a unicode right-to-left-override character at byte offset 96: + - b' test1(/*A\xe2\x80\xae/*B*/2 , 1/*\xe2\x80\xad' + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_6_11_right_to_left_override_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_6_11_right_to_left_override_sol__0.txt new file mode 100644 index 000000000..7e181d79d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_6_11_right_to_left_override_sol__0.txt @@ -0,0 +1,3 @@ +tests/e2e/detectors/test_data/rtlo/0.6.11/right_to_left_override.sol contains a unicode right-to-left-override character at byte offset 96: + - b' test1(/*A\xe2\x80\xae/*B*/2 , 1/*\xe2\x80\xad' + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_8_0_unicode_direction_override_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_8_0_unicode_direction_override_sol__0.txt new file mode 100644 index 000000000..6b4a48b5b --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_RightToLeftOverride_0_8_0_unicode_direction_override_sol__0.txt @@ -0,0 +1,9 @@ +tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol contains a unicode right-to-left-override character at byte offset 336: + - b' /*ok \xe2\x80\xaeaaa\xe2\x80\xaebbb\xe2\x80\xaeccc\xe2\x80\xacddd\xe2\x80\xaceee\xe2\x80\xac*/' + +tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol contains a unicode right-to-left-override character at byte offset 348: + - b'\x80\xaebbb\xe2\x80\xaeccc\xe2\x80\xacddd\xe2\x80\xaceee\xe2\x80\xac*/' + +tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol contains a unicode right-to-left-override character at byte offset 342: + - b'\x80\xaeaaa\xe2\x80\xaebbb\xe2\x80\xaeccc\xe2\x80\xacddd\xe2\x80\xaceee\xe2\x80\xac*/' + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_4_25_shadowing_abstract_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_4_25_shadowing_abstract_sol__0.txt new file mode 100644 index 000000000..3e14058b0 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_4_25_shadowing_abstract_sol__0.txt @@ -0,0 +1,3 @@ +DerivedContract.owner (tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol#7) shadows: + - BaseContract.owner (tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol#2) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_5_16_shadowing_abstract_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_5_16_shadowing_abstract_sol__0.txt new file mode 100644 index 000000000..f3f6523ac --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_5_16_shadowing_abstract_sol__0.txt @@ -0,0 +1,3 @@ +DerivedContract.owner (tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol#7) shadows: + - BaseContract.owner (tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol#2) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_7_5_public_gap_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_7_5_public_gap_variable_sol__0.txt new file mode 100644 index 000000000..de8db2897 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_7_5_public_gap_variable_sol__0.txt @@ -0,0 +1,3 @@ +DerivedContract.__gap (tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol#7) shadows: + - BaseContract.__gap (tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_7_5_shadowing_state_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ShadowingAbstractDetection_0_7_5_shadowing_state_variable_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_4_25_shift_parameter_mixup_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_4_25_shift_parameter_mixup_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_5_16_shift_parameter_mixup_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_5_16_shift_parameter_mixup_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_6_11_shift_parameter_mixup_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_6_11_shift_parameter_mixup_sol__0.txt new file mode 100644 index 000000000..354d90a13 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_6_11_shift_parameter_mixup_sol__0.txt @@ -0,0 +1,2 @@ +C.f() (tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol#3-7) contains an incorrect shift operation: a = 8 >> a (tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol#5) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_7_6_shift_parameter_mixup_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_7_6_shift_parameter_mixup_sol__0.txt new file mode 100644 index 000000000..08fdbe1c6 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_7_6_shift_parameter_mixup_sol__0.txt @@ -0,0 +1,2 @@ +C.f() (tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#3-7) contains an incorrect shift operation: a = 8 >> a (tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#5) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_4_25_similar_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_4_25_similar_variables_sol__0.txt new file mode 100644 index 000000000..7f6fa4da1 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_4_25_similar_variables_sol__0.txt @@ -0,0 +1,2 @@ +Variable Similar.f().testVariable (tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol#3) is too similar to Similar.f().textVariable (tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol#4) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_5_16_similar_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_5_16_similar_variables_sol__0.txt new file mode 100644 index 000000000..70b5c329b --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_5_16_similar_variables_sol__0.txt @@ -0,0 +1,2 @@ +Variable Similar.f().testVariable (tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol#3) is too similar to Similar.f().textVariable (tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol#4) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_6_11_similar_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_6_11_similar_variables_sol__0.txt new file mode 100644 index 000000000..efb92b5aa --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_6_11_similar_variables_sol__0.txt @@ -0,0 +1,2 @@ +Variable Similar.f().testVariable (tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol#3) is too similar to Similar.f().textVariable (tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol#4) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_7_6_similar_variables_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_7_6_similar_variables_sol__0.txt new file mode 100644 index 000000000..67d482328 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_SimilarVarsDetection_0_7_6_similar_variables_sol__0.txt @@ -0,0 +1,2 @@ +Variable Similar.f().testVariable (tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol#3) is too similar to Similar.f().textVariable (tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol#4) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_4_25_shadowing_state_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_4_25_shadowing_state_variable_sol__0.txt new file mode 100644 index 000000000..45b420ffe --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_4_25_shadowing_state_variable_sol__0.txt @@ -0,0 +1,3 @@ +DerivedContract.owner (tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol#12) shadows: + - BaseContract.owner (tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol#2) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_5_16_shadowing_state_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_5_16_shadowing_state_variable_sol__0.txt new file mode 100644 index 000000000..380a9d7bc --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_5_16_shadowing_state_variable_sol__0.txt @@ -0,0 +1,3 @@ +DerivedContract.owner (tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol#12) shadows: + - BaseContract.owner (tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol#2) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_6_11_shadowing_state_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_6_11_shadowing_state_variable_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_7_5_public_gap_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_7_5_public_gap_variable_sol__0.txt new file mode 100644 index 000000000..3c007c160 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_7_5_public_gap_variable_sol__0.txt @@ -0,0 +1,3 @@ +DerivedContract.__gap (tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol#8) shadows: + - BaseContract.__gap (tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_7_5_shadowing_state_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_7_5_shadowing_state_variable_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_7_6_shadowing_state_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_StateShadowing_0_7_6_shadowing_state_variable_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_StorageSignedIntegerArray_0_5_10_storage_signed_integer_array_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_StorageSignedIntegerArray_0_5_10_storage_signed_integer_array_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_StorageSignedIntegerArray_0_5_16_storage_signed_integer_array_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_StorageSignedIntegerArray_0_5_16_storage_signed_integer_array_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_4_25_suicidal_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_4_25_suicidal_sol__0.txt new file mode 100644 index 000000000..c66c69533 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_4_25_suicidal_sol__0.txt @@ -0,0 +1,2 @@ +C.i_am_a_backdoor() (tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol#4-6) allows anyone to destruct the contract + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_5_16_suicidal_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_5_16_suicidal_sol__0.txt new file mode 100644 index 000000000..85f559ea2 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_5_16_suicidal_sol__0.txt @@ -0,0 +1,2 @@ +C.i_am_a_backdoor() (tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol#4-6) allows anyone to destruct the contract + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_6_11_suicidal_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_6_11_suicidal_sol__0.txt new file mode 100644 index 000000000..81e1bd10f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_6_11_suicidal_sol__0.txt @@ -0,0 +1,2 @@ +C.i_am_a_backdoor() (tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol#4-6) allows anyone to destruct the contract + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_7_6_suicidal_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_7_6_suicidal_sol__0.txt new file mode 100644 index 000000000..4a784217d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Suicidal_0_7_6_suicidal_sol__0.txt @@ -0,0 +1,2 @@ +C.i_am_a_backdoor() (tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol#4-6) allows anyone to destruct the contract + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_4_25_timestamp_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_4_25_timestamp_sol__0.txt new file mode 100644 index 000000000..af0a71a09 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_4_25_timestamp_sol__0.txt @@ -0,0 +1,12 @@ +Timestamp.bad0() (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#4-6) uses timestamp for comparisons + Dangerous comparisons: + - require(bool)(block.timestamp == 0) (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#5) + +Timestamp.bad1() (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#8-11) uses timestamp for comparisons + Dangerous comparisons: + - require(bool)(time == 0) (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#10) + +Timestamp.bad2() (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#13-15) uses timestamp for comparisons + Dangerous comparisons: + - block.timestamp > 0 (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#14) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_5_16_timestamp_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_5_16_timestamp_sol__0.txt new file mode 100644 index 000000000..0b69aaf67 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_5_16_timestamp_sol__0.txt @@ -0,0 +1,12 @@ +Timestamp.bad1() (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#8-11) uses timestamp for comparisons + Dangerous comparisons: + - require(bool)(time == 0) (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#10) + +Timestamp.bad0() (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#4-6) uses timestamp for comparisons + Dangerous comparisons: + - require(bool)(block.timestamp == 0) (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#5) + +Timestamp.bad2() (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#13-15) uses timestamp for comparisons + Dangerous comparisons: + - block.timestamp > 0 (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#14) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_6_11_timestamp_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_6_11_timestamp_sol__0.txt new file mode 100644 index 000000000..0ac45cfcd --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_6_11_timestamp_sol__0.txt @@ -0,0 +1,12 @@ +Timestamp.bad0() (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#4-6) uses timestamp for comparisons + Dangerous comparisons: + - require(bool)(block.timestamp == 0) (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#5) + +Timestamp.bad1() (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#8-11) uses timestamp for comparisons + Dangerous comparisons: + - require(bool)(time == 0) (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#10) + +Timestamp.bad2() (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#13-15) uses timestamp for comparisons + Dangerous comparisons: + - block.timestamp > 0 (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#14) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_7_6_timestamp_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_7_6_timestamp_sol__0.txt new file mode 100644 index 000000000..b2a7df3bc --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_Timestamp_0_7_6_timestamp_sol__0.txt @@ -0,0 +1,12 @@ +Timestamp.bad2() (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#13-15) uses timestamp for comparisons + Dangerous comparisons: + - block.timestamp > 0 (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#14) + +Timestamp.bad0() (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#4-6) uses timestamp for comparisons + Dangerous comparisons: + - require(bool)(block.timestamp == 0) (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#5) + +Timestamp.bad1() (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#8-11) uses timestamp for comparisons + Dangerous comparisons: + - require(bool)(time == 0) (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_4_25_too_many_digits_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_4_25_too_many_digits_sol__0.txt new file mode 100644 index 000000000..8208f1f83 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_4_25_too_many_digits_sol__0.txt @@ -0,0 +1,15 @@ +C.h() (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#20-24) uses literals with too many digits: + - x2 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#22) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#9-15) uses literals with too many digits: + - x4 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#13) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#9-15) uses literals with too many digits: + - x1 = 0x000001 (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#10) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#9-15) uses literals with too many digits: + - x3 = 1000000000000000000 (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#12) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#9-15) uses literals with too many digits: + - x2 = 0x0000000000001 (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#11) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_5_16_too_many_digits_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_5_16_too_many_digits_sol__0.txt new file mode 100644 index 000000000..a1b31e430 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_5_16_too_many_digits_sol__0.txt @@ -0,0 +1,15 @@ +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#9-15) uses literals with too many digits: + - x2 = 0x0000000000001 (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#11) + +C.h() (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#20-24) uses literals with too many digits: + - x2 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#22) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#9-15) uses literals with too many digits: + - x3 = 1000000000000000000 (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#12) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#9-15) uses literals with too many digits: + - x1 = 0x000001 (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#10) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#9-15) uses literals with too many digits: + - x4 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#13) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_6_11_too_many_digits_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_6_11_too_many_digits_sol__0.txt new file mode 100644 index 000000000..99b094b70 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_6_11_too_many_digits_sol__0.txt @@ -0,0 +1,15 @@ +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#9-15) uses literals with too many digits: + - x3 = 1000000000000000000 (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#12) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#9-15) uses literals with too many digits: + - x2 = 0x0000000000001 (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#11) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#9-15) uses literals with too many digits: + - x4 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#13) + +C.h() (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#20-24) uses literals with too many digits: + - x2 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#22) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#9-15) uses literals with too many digits: + - x1 = 0x000001 (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_7_6_too_many_digits_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_7_6_too_many_digits_sol__0.txt new file mode 100644 index 000000000..7131d5a36 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TooManyDigits_0_7_6_too_many_digits_sol__0.txt @@ -0,0 +1,15 @@ +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#9-15) uses literals with too many digits: + - x3 = 1000000000000000000 (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#12) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#9-15) uses literals with too many digits: + - x2 = 0x0000000000001 (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#11) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#9-15) uses literals with too many digits: + - x1 = 0x000001 (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#10) + +C.h() (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#20-24) uses literals with too many digits: + - x2 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#22) + +C.f() (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#9-15) uses literals with too many digits: + - x4 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#13) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_4_25_tx_origin_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_4_25_tx_origin_sol__0.txt new file mode 100644 index 000000000..aa6d40e48 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_4_25_tx_origin_sol__0.txt @@ -0,0 +1,4 @@ +TxOrigin.bug0() (tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#9-11) uses tx.origin for authorization: require(bool)(tx.origin == owner) (tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#10) + +TxOrigin.bug2() (tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#13-17) uses tx.origin for authorization: tx.origin != owner (tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#14) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_5_16_tx_origin_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_5_16_tx_origin_sol__0.txt new file mode 100644 index 000000000..eb49cde78 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_5_16_tx_origin_sol__0.txt @@ -0,0 +1,4 @@ +TxOrigin.bug0() (tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#9-11) uses tx.origin for authorization: require(bool)(tx.origin == owner) (tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#10) + +TxOrigin.bug2() (tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#13-17) uses tx.origin for authorization: tx.origin != owner (tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#14) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_6_11_tx_origin_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_6_11_tx_origin_sol__0.txt new file mode 100644 index 000000000..cc0ce1271 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_6_11_tx_origin_sol__0.txt @@ -0,0 +1,4 @@ +TxOrigin.bug0() (tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#9-11) uses tx.origin for authorization: require(bool)(tx.origin == owner) (tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#10) + +TxOrigin.bug2() (tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#13-17) uses tx.origin for authorization: tx.origin != owner (tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#14) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_7_6_tx_origin_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_7_6_tx_origin_sol__0.txt new file mode 100644 index 000000000..ea23b4075 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TxOrigin_0_7_6_tx_origin_sol__0.txt @@ -0,0 +1,4 @@ +TxOrigin.bug2() (tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#13-17) uses tx.origin for authorization: tx.origin != owner (tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#14) + +TxOrigin.bug0() (tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#9-11) uses tx.origin for authorization: require(bool)(tx.origin == owner) (tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_4_25_type_based_tautology_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_4_25_type_based_tautology_sol__0.txt new file mode 100644 index 000000000..c9e83e76c --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_4_25_type_based_tautology_sol__0.txt @@ -0,0 +1,6 @@ +A.g(uint8) (tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#9-11) contains a tautology or contradiction: + - (y < 512) (tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#10) + +A.f(uint256) (tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#2-7) contains a tautology or contradiction: + - x >= 0 (tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_5_16_type_based_tautology_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_5_16_type_based_tautology_sol__0.txt new file mode 100644 index 000000000..3fbaa967d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_5_16_type_based_tautology_sol__0.txt @@ -0,0 +1,6 @@ +A.g(uint8) (tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#9-11) contains a tautology or contradiction: + - (y < 512) (tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#10) + +A.f(uint256) (tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#2-7) contains a tautology or contradiction: + - x >= 0 (tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_6_11_type_based_tautology_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_6_11_type_based_tautology_sol__0.txt new file mode 100644 index 000000000..ea4f90e52 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_6_11_type_based_tautology_sol__0.txt @@ -0,0 +1,6 @@ +A.g(uint8) (tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#9-11) contains a tautology or contradiction: + - (y < 512) (tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#10) + +A.f(uint256) (tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#2-7) contains a tautology or contradiction: + - x >= 0 (tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_7_6_type_based_tautology_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_7_6_type_based_tautology_sol__0.txt new file mode 100644 index 000000000..8fc370f03 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_TypeBasedTautology_0_7_6_type_based_tautology_sol__0.txt @@ -0,0 +1,6 @@ +A.g(uint8) (tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#9-11) contains a tautology or contradiction: + - (y < 512) (tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#10) + +A.f(uint256) (tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#2-7) contains a tautology or contradiction: + - x >= 0 (tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_4_25_unchecked_lowlevel_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_4_25_unchecked_lowlevel_sol__0.txt new file mode 100644 index 000000000..a5f99697d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_4_25_unchecked_lowlevel_sol__0.txt @@ -0,0 +1,2 @@ +MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol#2-4) ignores return value by dst.call.value(msg.value)() (tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_5_16_unchecked_lowlevel_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_5_16_unchecked_lowlevel_sol__0.txt new file mode 100644 index 000000000..7754728fa --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_5_16_unchecked_lowlevel_sol__0.txt @@ -0,0 +1,2 @@ +MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol#2-4) ignores return value by dst.call.value(msg.value)() (tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_6_11_unchecked_lowlevel_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_6_11_unchecked_lowlevel_sol__0.txt new file mode 100644 index 000000000..940ba0675 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_6_11_unchecked_lowlevel_sol__0.txt @@ -0,0 +1,2 @@ +MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol#2-4) ignores return value by dst.call.value(msg.value)() (tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_7_6_unchecked_lowlevel_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_7_6_unchecked_lowlevel_sol__0.txt new file mode 100644 index 000000000..d0b8e63c7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedLowLevel_0_7_6_unchecked_lowlevel_sol__0.txt @@ -0,0 +1,2 @@ +MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol#2-4) ignores return value by dst.call{value: msg.value}() (tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_4_25_unchecked_send_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_4_25_unchecked_send_sol__0.txt new file mode 100644 index 000000000..a295ad637 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_4_25_unchecked_send_sol__0.txt @@ -0,0 +1,2 @@ +MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol#2-4) ignores return value by dst.send(msg.value) (tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_5_16_unchecked_send_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_5_16_unchecked_send_sol__0.txt new file mode 100644 index 000000000..73f8f1a39 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_5_16_unchecked_send_sol__0.txt @@ -0,0 +1,2 @@ +MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol#2-4) ignores return value by dst.send(msg.value) (tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_6_11_unchecked_send_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_6_11_unchecked_send_sol__0.txt new file mode 100644 index 000000000..babda5b66 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_6_11_unchecked_send_sol__0.txt @@ -0,0 +1,2 @@ +MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol#2-4) ignores return value by dst.send(msg.value) (tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_7_6_unchecked_send_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_7_6_unchecked_send_sol__0.txt new file mode 100644 index 000000000..c06eae1e4 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedSend_0_7_6_unchecked_send_sol__0.txt @@ -0,0 +1,2 @@ +MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol#2-4) ignores return value by dst.send(msg.value) (tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol#3) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UncheckedTransfer_0_7_6_unused_return_transfers_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedTransfer_0_7_6_unused_return_transfers_sol__0.txt new file mode 100644 index 000000000..2594e8eab --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UncheckedTransfer_0_7_6_unused_return_transfers_sol__0.txt @@ -0,0 +1,4 @@ +C.bad0() (tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#20-22) ignores return value by t.transfer(address(0),1000000000000000000) (tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#21) + +C.bad1() (tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#40-42) ignores return value by t.transferFrom(address(this),address(0),1000000000000000000) (tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#41) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_4_25_unimplemented_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_4_25_unimplemented_sol__0.txt new file mode 100644 index 000000000..201026ec4 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_4_25_unimplemented_sol__0.txt @@ -0,0 +1,13 @@ +DerivedContract_good (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#35-41) does not implement functions: + - BaseInterface3.get(uint256) (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#24) + +DerivedContract_bad2 (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#27-33) does not implement functions: + - BaseInterface3.get(uint256) (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#24) + +DerivedContract_bad0 (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#10-14) does not implement functions: + - BaseInterface.f2() (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#3) + - BaseInterface2.f3() (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#7) + +AbstractContract_bad1 (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#16-21) does not implement functions: + - AbstractContract_bad1.f1() (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#17) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_5_16_unimplemented_interfaces_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_5_16_unimplemented_interfaces_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_5_16_unimplemented_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_5_16_unimplemented_sol__0.txt new file mode 100644 index 000000000..3ddb52a8f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_5_16_unimplemented_sol__0.txt @@ -0,0 +1,7 @@ +DerivedContract_bad0 (tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#10-14) does not implement functions: + - BaseInterface.f2() (tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#3) + - BaseInterface2.f3() (tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#7) + +AbstractContract_bad1 (tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#16-21) does not implement functions: + - AbstractContract_bad1.f1() (tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#17) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_6_11_unimplemented_interfaces_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_6_11_unimplemented_interfaces_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_6_11_unimplemented_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_6_11_unimplemented_sol__0.txt new file mode 100644 index 000000000..5c1837773 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_6_11_unimplemented_sol__0.txt @@ -0,0 +1,10 @@ +DerivedContract_bad2 (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#27-33) does not implement functions: + - BaseInterface3.get(uint256) (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#24) + +DerivedContract_bad0 (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#10-14) does not implement functions: + - BaseInterface.f2() (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#3) + - BaseInterface2.f3() (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#7) + +AbstractContract_bad1 (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#16-21) does not implement functions: + - AbstractContract_bad1.f1() (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#17) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_7_6_unimplemented_interfaces_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_7_6_unimplemented_interfaces_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_7_6_unimplemented_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_7_6_unimplemented_sol__0.txt new file mode 100644 index 000000000..716ddd54e --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnimplementedFunctionDetection_0_7_6_unimplemented_sol__0.txt @@ -0,0 +1,10 @@ +DerivedContract_bad2 (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#27-33) does not implement functions: + - BaseInterface3.get(uint256) (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#24) + +DerivedContract_bad0 (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#10-14) does not implement functions: + - BaseInterface.f2() (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#3) + - BaseInterface2.f3() (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#7) + +AbstractContract_bad1 (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#16-21) does not implement functions: + - AbstractContract_bad1.f1() (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#17) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_4_25_erc20_indexed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_4_25_erc20_indexed_sol__0.txt new file mode 100644 index 000000000..a571ef77a --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_4_25_erc20_indexed_sol__0.txt @@ -0,0 +1,8 @@ +ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#19)does not index parameter to + +ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#20)does not index parameter owner + +ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#19)does not index parameter from + +ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#20)does not index parameter spender + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_5_16_erc20_indexed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_5_16_erc20_indexed_sol__0.txt new file mode 100644 index 000000000..09171d188 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_5_16_erc20_indexed_sol__0.txt @@ -0,0 +1,8 @@ +ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#19)does not index parameter to + +ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#20)does not index parameter owner + +ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#19)does not index parameter from + +ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#20)does not index parameter spender + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_6_11_erc20_indexed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_6_11_erc20_indexed_sol__0.txt new file mode 100644 index 000000000..c0cbe9270 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_6_11_erc20_indexed_sol__0.txt @@ -0,0 +1,8 @@ +ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#19)does not index parameter to + +ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#20)does not index parameter owner + +ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#19)does not index parameter from + +ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#20)does not index parameter spender + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_7_6_erc20_indexed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_7_6_erc20_indexed_sol__0.txt new file mode 100644 index 000000000..532a8b6cd --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_7_6_erc20_indexed_sol__0.txt @@ -0,0 +1,8 @@ +ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#19)does not index parameter to + +ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#20)does not index parameter owner + +ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#19)does not index parameter from + +ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#20)does not index parameter spender + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_4_25_uninitialized_function_ptr_constructor_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_4_25_uninitialized_function_ptr_constructor_sol__0.txt new file mode 100644 index 000000000..3b51472a6 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_4_25_uninitialized_function_ptr_constructor_sol__0.txt @@ -0,0 +1,12 @@ +Contract bad2 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#20-29) + s.a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#27) is an unintialized function pointer call in a constructor + +Contract bad0 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#3-9) + a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#7) is an unintialized function pointer call in a constructor + +Contract bad3 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#31-42) + a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#36) is an unintialized function pointer call in a constructor + +Contract bad1 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#11-18) + b(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#16) is an unintialized function pointer call in a constructor + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_5_16_uninitialized_function_ptr_constructor_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_5_16_uninitialized_function_ptr_constructor_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_5_8_uninitialized_function_ptr_constructor_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_5_8_uninitialized_function_ptr_constructor_sol__0.txt new file mode 100644 index 000000000..db218266d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedFunctionPtrsConstructor_0_5_8_uninitialized_function_ptr_constructor_sol__0.txt @@ -0,0 +1,12 @@ +Contract bad3 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#31-42) + a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#36) is an unintialized function pointer call in a constructor + +Contract bad1 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#11-18) + b(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#16) is an unintialized function pointer call in a constructor + +Contract bad0 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#3-9) + a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#7) is an unintialized function pointer call in a constructor + +Contract bad2 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#20-29) + s.a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#27) is an unintialized function pointer call in a constructor + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_4_25_uninitialized_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_4_25_uninitialized_local_variable_sol__0.txt new file mode 100644 index 000000000..1aac68703 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_4_25_uninitialized_local_variable_sol__0.txt @@ -0,0 +1,2 @@ +Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol#4) is a local variable never initialized + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_5_16_uninitialized_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_5_16_uninitialized_local_variable_sol__0.txt new file mode 100644 index 000000000..53195cb87 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_5_16_uninitialized_local_variable_sol__0.txt @@ -0,0 +1,2 @@ +Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol#4) is a local variable never initialized + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_6_11_uninitialized_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_6_11_uninitialized_local_variable_sol__0.txt new file mode 100644 index 000000000..8e5dc65e8 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_6_11_uninitialized_local_variable_sol__0.txt @@ -0,0 +1,2 @@ +Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol#4) is a local variable never initialized + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_7_6_uninitialized_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_7_6_uninitialized_local_variable_sol__0.txt new file mode 100644 index 000000000..495859ec1 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_7_6_uninitialized_local_variable_sol__0.txt @@ -0,0 +1,2 @@ +Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol#4) is a local variable never initialized + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_4_25_uninitialized_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_4_25_uninitialized_sol__0.txt new file mode 100644 index 000000000..f1af6d3a5 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_4_25_uninitialized_sol__0.txt @@ -0,0 +1,12 @@ +Test2.st (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#45) is never initialized. It is used in: + - Test2.use() (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#53-56) + +Test.balances (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#15) is never initialized. It is used in: + - Test.use() (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#23-26) + +Test2.v (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#47) is never initialized. It is used in: + - Test2.init() (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#49-51) + +Uninitialized.destination (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#5) is never initialized. It is used in: + - Uninitialized.transfer() (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#7-9) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_5_16_uninitialized_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_5_16_uninitialized_sol__0.txt new file mode 100644 index 000000000..fc3352132 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_5_16_uninitialized_sol__0.txt @@ -0,0 +1,12 @@ +Test2.st (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#45) is never initialized. It is used in: + - Test2.use() (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#53-56) + +Test.balances (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#15) is never initialized. It is used in: + - Test.use() (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#23-26) + +Test2.v (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#47) is never initialized. It is used in: + - Test2.init() (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#49-51) + +Uninitialized.destination (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#5) is never initialized. It is used in: + - Uninitialized.transfer() (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#7-9) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_6_11_uninitialized_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_6_11_uninitialized_sol__0.txt new file mode 100644 index 000000000..486c71220 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_6_11_uninitialized_sol__0.txt @@ -0,0 +1,12 @@ +Test2.st (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#45) is never initialized. It is used in: + - Test2.use() (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#53-56) + +Test.balances (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#15) is never initialized. It is used in: + - Test.use() (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#23-26) + +Test2.v (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#47) is never initialized. It is used in: + - Test2.init() (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#49-51) + +Uninitialized.destination (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#5) is never initialized. It is used in: + - Uninitialized.transfer() (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#7-9) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_7_6_uninitialized_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_7_6_uninitialized_sol__0.txt new file mode 100644 index 000000000..55501d5a2 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStateVarsDetection_0_7_6_uninitialized_sol__0.txt @@ -0,0 +1,12 @@ +Test2.st (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#45) is never initialized. It is used in: + - Test2.use() (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#53-56) + +Test.balances (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#15) is never initialized. It is used in: + - Test.use() (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#23-26) + +Test2.v (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#47) is never initialized. It is used in: + - Test2.init() (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#49-51) + +Uninitialized.destination (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#5) is never initialized. It is used in: + - Uninitialized.transfer() (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#7-9) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStorageVars_0_4_25_uninitialized_storage_pointer_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStorageVars_0_4_25_uninitialized_storage_pointer_sol__0.txt new file mode 100644 index 000000000..c6bbddd46 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStorageVars_0_4_25_uninitialized_storage_pointer_sol__0.txt @@ -0,0 +1,2 @@ +Uninitialized.func().st_bug (tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol#10) is a storage variable never initialized + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStorageVars_0_8_19_uninitialized_storage_pointer_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStorageVars_0_8_19_uninitialized_storage_pointer_sol__0.txt new file mode 100644 index 000000000..23cce5fc5 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedStorageVars_0_8_19_uninitialized_storage_pointer_sol__0.txt @@ -0,0 +1,2 @@ +Uninitialized.bad().ret (tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol#7) is a storage variable never initialized + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_4_25_Buggy_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_4_25_Buggy_sol__0.txt new file mode 100644 index 000000000..996998ae8 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_4_25_Buggy_sol__0.txt @@ -0,0 +1 @@ +Buggy (tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol#3-15) is an upgradeable contract that does not protect its initialize functions: Buggy.initialize() (tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol#6-9). Anyone can delete the contract with: Buggy.kill() (tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol#10-13) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_4_25_Fixed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_4_25_Fixed_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_4_25_whitelisted_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_4_25_whitelisted_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_5_16_Buggy_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_5_16_Buggy_sol__0.txt new file mode 100644 index 000000000..ca6d57d00 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_5_16_Buggy_sol__0.txt @@ -0,0 +1 @@ +Buggy (tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol#3-15) is an upgradeable contract that does not protect its initialize functions: Buggy.initialize() (tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol#6-9). Anyone can delete the contract with: Buggy.kill() (tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol#10-13) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_5_16_Fixed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_5_16_Fixed_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_5_16_whitelisted_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_5_16_whitelisted_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_6_11_Buggy_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_6_11_Buggy_sol__0.txt new file mode 100644 index 000000000..5620196b0 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_6_11_Buggy_sol__0.txt @@ -0,0 +1 @@ +Buggy (tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol#3-15) is an upgradeable contract that does not protect its initialize functions: Buggy.initialize() (tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol#6-9). Anyone can delete the contract with: Buggy.kill() (tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol#10-13) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_6_11_Fixed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_6_11_Fixed_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_6_11_whitelisted_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_6_11_whitelisted_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_7_6_Buggy_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_7_6_Buggy_sol__0.txt new file mode 100644 index 000000000..59b0795ad --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_7_6_Buggy_sol__0.txt @@ -0,0 +1 @@ +Buggy (tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol#3-15) is an upgradeable contract that does not protect its initialize functions: Buggy.initialize() (tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol#6-9). Anyone can delete the contract with: Buggy.kill() (tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol#10-13) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_7_6_Fixed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_7_6_Fixed_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_7_6_whitelisted_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_7_6_whitelisted_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_8_15_Buggy_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_8_15_Buggy_sol__0.txt new file mode 100644 index 000000000..7255d7d0d --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_8_15_Buggy_sol__0.txt @@ -0,0 +1 @@ +Buggy (tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol#3-14) is an upgradeable contract that does not protect its initialize functions: Buggy.initialize() (tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol#6-9). Anyone can delete the contract with: Buggy.kill() (tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol#10-13) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_8_15_Fixed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_8_15_Fixed_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_8_15_whitelisted_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnprotectedUpgradeable_0_8_15_whitelisted_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_4_25_unused_return_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_4_25_unused_return_sol__0.txt new file mode 100644 index 000000000..ec28fa9e5 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_4_25_unused_return_sol__0.txt @@ -0,0 +1,4 @@ +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#18) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#22) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_5_16_unused_return_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_5_16_unused_return_sol__0.txt new file mode 100644 index 000000000..0cf04d283 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_5_16_unused_return_sol__0.txt @@ -0,0 +1,4 @@ +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#18) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#22) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_6_11_unused_return_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_6_11_unused_return_sol__0.txt new file mode 100644 index 000000000..be0a8c687 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_6_11_unused_return_sol__0.txt @@ -0,0 +1,4 @@ +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#22) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#18) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_7_6_unused_return_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_7_6_unused_return_sol__0.txt new file mode 100644 index 000000000..ec74a9458 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_7_6_unused_return_sol__0.txt @@ -0,0 +1,4 @@ +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#22) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#18) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_4_25_unused_state_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_4_25_unused_state_sol__0.txt new file mode 100644 index 000000000..64308a427 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_4_25_unused_state_sol__0.txt @@ -0,0 +1,8 @@ +A.unused (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#4) is never used in B (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#11-16) + +A.unused4 (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#7) is never used in B (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#11-16) + +A.unused2 (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#5) is never used in B (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#11-16) + +A.unused3 (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#6) is never used in B (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#11-16) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_5_16_unused_state_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_5_16_unused_state_sol__0.txt new file mode 100644 index 000000000..ad3721512 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_5_16_unused_state_sol__0.txt @@ -0,0 +1,8 @@ +A.unused (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#4) is never used in B (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#11-16) + +A.unused4 (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#7) is never used in B (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#11-16) + +A.unused2 (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#5) is never used in B (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#11-16) + +A.unused3 (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#6) is never used in B (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#11-16) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_6_11_unused_state_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_6_11_unused_state_sol__0.txt new file mode 100644 index 000000000..3c9a9a7ff --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_6_11_unused_state_sol__0.txt @@ -0,0 +1,8 @@ +A.unused (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#4) is never used in B (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#11-16) + +A.unused4 (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#7) is never used in B (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#11-16) + +A.unused2 (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#5) is never used in B (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#11-16) + +A.unused3 (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#6) is never used in B (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#11-16) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_7_6_unused_state_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_7_6_unused_state_sol__0.txt new file mode 100644 index 000000000..39c7ed13e --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedStateVars_0_7_6_unused_state_sol__0.txt @@ -0,0 +1,8 @@ +A.unused (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#4) is never used in B (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#11-16) + +A.unused4 (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#7) is never used in B (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#11-16) + +A.unused2 (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#5) is never used in B (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#11-16) + +A.unused3 (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#6) is never used in B (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#11-16) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_4_25_var_read_using_this_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_4_25_var_read_using_this_sol__0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_5_16_var_read_using_this_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_5_16_var_read_using_this_sol__0.txt new file mode 100644 index 000000000..bd4950ea2 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_5_16_var_read_using_this_sol__0.txt @@ -0,0 +1,8 @@ +The function VarReadUsingThis.bad3() (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#11-13) reads this.erc20() == address(0) (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#12) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad4() (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#14-18) reads local = this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#16) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad1(uint256) (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#5-7) reads this.myMap(x) (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#6) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad2() (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#8-10) reads this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#9) with `this` which adds an extra STATICCALL. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_6_11_var_read_using_this_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_6_11_var_read_using_this_sol__0.txt new file mode 100644 index 000000000..b6f3c92a7 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_6_11_var_read_using_this_sol__0.txt @@ -0,0 +1,8 @@ +The function VarReadUsingThis.bad2() (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#8-10) reads this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#9) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad1(uint256) (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#5-7) reads this.myMap(x) (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#6) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad3() (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#11-13) reads this.erc20() == address(0) (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#12) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad4() (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#14-18) reads local = this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#16) with `this` which adds an extra STATICCALL. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_7_6_var_read_using_this_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_7_6_var_read_using_this_sol__0.txt new file mode 100644 index 000000000..d92862289 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_7_6_var_read_using_this_sol__0.txt @@ -0,0 +1,8 @@ +The function VarReadUsingThis.bad2() (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#8-10) reads this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#9) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad4() (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#14-18) reads local = this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#16) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad1(uint256) (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#5-7) reads this.myMap(x) (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#6) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad3() (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#11-13) reads this.erc20() == address(0) (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#12) with `this` which adds an extra STATICCALL. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_8_15_var_read_using_this_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_8_15_var_read_using_this_sol__0.txt new file mode 100644 index 000000000..1e2e0ca57 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_VarReadUsingThis_0_8_15_var_read_using_this_sol__0.txt @@ -0,0 +1,8 @@ +The function VarReadUsingThis.bad2() (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#8-10) reads this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#9) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad1(uint256) (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#5-7) reads this.myMap(x) (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#6) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad4() (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#14-18) reads local = this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#16) with `this` which adds an extra STATICCALL. + +The function VarReadUsingThis.bad3() (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#11-13) reads this.erc20() == address(0) (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#12) with `this` which adds an extra STATICCALL. + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_4_25_void_cst_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_4_25_void_cst_sol__0.txt new file mode 100644 index 000000000..8dddd403f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_4_25_void_cst_sol__0.txt @@ -0,0 +1,3 @@ +Void constructor called in D.constructor() (tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol#10-12): + - C() (tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_5_16_void_cst_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_5_16_void_cst_sol__0.txt new file mode 100644 index 000000000..b55d45867 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_5_16_void_cst_sol__0.txt @@ -0,0 +1,3 @@ +Void constructor called in D.constructor() (tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol#10-12): + - C() (tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_6_11_void_cst_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_6_11_void_cst_sol__0.txt new file mode 100644 index 000000000..48b9a8f2f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_6_11_void_cst_sol__0.txt @@ -0,0 +1,3 @@ +Void constructor called in D.constructor() (tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol#10-12): + - C() (tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_7_6_void_cst_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_7_6_void_cst_sol__0.txt new file mode 100644 index 000000000..d585b4465 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_VoidConstructor_0_7_6_void_cst_sol__0.txt @@ -0,0 +1,3 @@ +Void constructor called in D.constructor() (tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol#10-12): + - C() (tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol#10) + diff --git a/tests/e2e/detectors/snapshots/detectors__detector_WriteAfterWrite_0_8_0_write_after_write_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_WriteAfterWrite_0_8_0_write_after_write_sol__0.txt new file mode 100644 index 000000000..847ab5c14 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_WriteAfterWrite_0_8_0_write_after_write_sol__0.txt @@ -0,0 +1,12 @@ +Test.state (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#3) is written in both + state = 10 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#10) + state = 20 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#11) + +Test.bugy_external_local().local (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#52) is written in both + local = 10 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#53) + local = 11 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#56) + +Test.buggy_local().a (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#21) is written in both + a = 10 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#22) + a = 20 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#23) + diff --git a/tests/e2e/detectors/test_detectors.py b/tests/e2e/detectors/test_detectors.py index fe5b302d6..0e3185eef 100644 --- a/tests/e2e/detectors/test_detectors.py +++ b/tests/e2e/detectors/test_detectors.py @@ -1660,7 +1660,7 @@ TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" # pylint: disable=too-many-locals @pytest.mark.parametrize("test_item", ALL_TESTS, ids=id_test) -def test_detector(test_item: Test): +def test_detector(test_item: Test, snapshot): test_dir_path = Path( TEST_DATA_DIR, test_item.detector.ARGUMENT, @@ -1678,6 +1678,13 @@ def test_detector(test_item: Test): sl.register_detector(test_item.detector) results = sl.run_detectors() + actual_output = "" + for detector_result in results: + for result in detector_result: + actual_output += result["description"] + actual_output += "\n" + assert snapshot() == actual_output + with open(expected_result_path, encoding="utf8") as f: expected_result = json.load(f) From 0f5fcce65d709978d8d79287bec7564ef3a06660 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 4 Apr 2023 11:01:22 -0500 Subject: [PATCH 047/220] remove deepdiff and no longer used artifacts --- ...V2_array.sol.0.4.25.ABIEncoderV2Array.json | 1804 - ...V2_array.sol.0.5.10.ABIEncoderV2Array.json | 3 - ...V2_array.sol.0.5.11.ABIEncoderV2Array.json | 3 - ...rV2_array.sol.0.5.9.ABIEncoderV2Array.json | 1804 - ...t.sol.0.4.25.ArbitrarySendErc20Permit.json | 748 - ...t.sol.0.5.16.ArbitrarySendErc20Permit.json | 748 - ...t.sol.0.6.11.ArbitrarySendErc20Permit.json | 748 - ...it.sol.0.7.6.ArbitrarySendErc20Permit.json | 748 - ...it.sol.0.8.0.ArbitrarySendErc20Permit.json | 748 - ...sol.0.4.25.ArbitrarySendErc20NoPermit.json | 688 - ...sol.0.5.16.ArbitrarySendErc20NoPermit.json | 688 - ...sol.0.6.11.ArbitrarySendErc20NoPermit.json | 688 - ....sol.0.7.6.ArbitrarySendErc20NoPermit.json | 688 - ....sol.0.8.0.ArbitrarySendErc20NoPermit.json | 688 - ....sol.0.8.0.ArbitrarySendErc20NoPermit.json | 126 - ..._send_eth.sol.0.4.25.ArbitrarySendEth.json | 380 - ..._send_eth.sol.0.5.16.ArbitrarySendEth.json | 380 - ..._send_eth.sol.0.6.11.ArbitrarySendEth.json | 380 - ...y_send_eth.sol.0.7.6.ArbitrarySendEth.json | 380 - ...reference.sol.0.4.25.ArrayByReference.json | 1301 - ...reference.sol.0.5.16.ArrayByReference.json | 1301 - ...reference.sol.0.6.11.ArrayByReference.json | 1301 - ..._reference.sol.0.7.6.ArrayByReference.json | 1301 - ...assembly_contract.sol.0.4.25.Assembly.json | 181 - ..._assembly_library.sol.0.4.25.Assembly.json | 464 - ...assembly_contract.sol.0.5.16.Assembly.json | 180 - ..._assembly_library.sol.0.5.16.Assembly.json | 462 - ...assembly_contract.sol.0.6.11.Assembly.json | 180 - ..._assembly_library.sol.0.6.11.Assembly.json | 462 - ..._assembly_contract.sol.0.7.6.Assembly.json | 180 - ...e_assembly_library.sol.0.7.6.Assembly.json | 462 - ...e_change.sol.0.4.25.AssertStateChange.json | 556 - ...e_change.sol.0.5.16.AssertStateChange.json | 556 - ...e_change.sol.0.6.11.AssertStateChange.json | 556 - ...te_change.sol.0.7.6.AssertStateChange.json | 556 - .../0.4.25/backdoor.sol.0.4.25.Backdoor.json | 60 - .../0.5.16/backdoor.sol.0.5.16.Backdoor.json | 60 - .../0.6.11/backdoor.sol.0.6.11.Backdoor.json | 60 - .../0.7.6/backdoor.sol.0.7.6.Backdoor.json | 60 - ...suse.sol.0.4.25.BooleanConstantMisuse.json | 204 - ...suse.sol.0.5.16.BooleanConstantMisuse.json | 204 - ...suse.sol.0.6.11.BooleanConstantMisuse.json | 204 - ...isuse.sol.0.7.6.BooleanConstantMisuse.json | 204 - ...t-equality.sol.0.4.25.BooleanEquality.json | 166 - ...t-equality.sol.0.5.16.BooleanEquality.json | 166 - ...t-equality.sol.0.6.11.BooleanEquality.json | 166 - ...nt-equality.sol.0.7.6.BooleanEquality.json | 166 - ...n_loop.sol.0.4.25.MultipleCallsInLoop.json | 678 - ...n_loop.sol.0.5.16.MultipleCallsInLoop.json | 678 - ...n_loop.sol.0.6.11.MultipleCallsInLoop.json | 678 - ...in_loop.sol.0.7.6.MultipleCallsInLoop.json | 678 - ..._variables.sol.0.4.25.CouldBeConstant.json | 386 - ..._variables.sol.0.5.16.CouldBeConstant.json | 454 - ..._variables.sol.0.6.11.CouldBeConstant.json | 457 - ...e_variables.sol.0.7.6.CouldBeConstant.json | 454 - ...e_variables.sol.0.8.0.CouldBeConstant.json | 454 - ...stant.sol.0.4.25.ConstantFunctionsAsm.json | 81 - ...stant.sol.0.5.16.ConstantFunctionsAsm.json | 3 - ...stant.sol.0.6.11.ConstantFunctionsAsm.json | 3 - ...nstant.sol.0.7.6.ConstantFunctionsAsm.json | 3 - ...ant.sol.0.4.25.ConstantFunctionsState.json | 278 - ...ant.sol.0.5.16.ConstantFunctionsState.json | 3 - ...ant.sol.0.6.11.ConstantFunctionsState.json | 3 - ...tant.sol.0.7.6.ConstantFunctionsState.json | 3 - ...ment.sol.0.4.25.ArrayLengthAssignment.json | 595 - ...ment.sol.0.5.16.ArrayLengthAssignment.json | 595 - ...all.sol.0.4.25.ControlledDelegateCall.json | 318 - ...all.sol.0.5.16.ControlledDelegateCall.json | 318 - ...all.sol.0.6.11.ControlledDelegateCall.json | 318 - ...call.sol.0.7.6.ControlledDelegateCall.json | 318 - ...oop.sol.0.4.25.CostlyOperationsInLoop.json | 780 - ...oop.sol.0.5.16.CostlyOperationsInLoop.json | 780 - ...oop.sol.0.6.11.CostlyOperationsInLoop.json | 780 - ...loop.sol.0.7.6.CostlyOperationsInLoop.json | 780 - ...exity.sol.0.8.16.CyclomaticComplexity.json | 96 - ...exity.sol.0.8.16.CyclomaticComplexity.json | 3 - .../0.8.0/dead-code.sol.0.8.0.DeadCode.json | 167 - ...ll_loop.sol.0.4.25.DelegatecallInLoop.json | 542 - ...ll_loop.sol.0.5.16.DelegatecallInLoop.json | 542 - ...ll_loop.sol.0.6.11.DelegatecallInLoop.json | 542 - ...all_loop.sol.0.7.6.DelegatecallInLoop.json | 542 - ...all_loop.sol.0.8.0.DelegatecallInLoop.json | 542 - ..._calls.sol.0.4.25.DeprecatedStandards.json | 170 - ...tiply.sol.0.4.25.DivideBeforeMultiply.json | 122 - ...tiply.sol.0.5.16.DivideBeforeMultiply.json | 122 - ...tiply.sol.0.6.11.DivideBeforeMultiply.json | 122 - ...ltiply.sol.0.7.6.DivideBeforeMultiply.json | 122 - ...n.sol.0.4.25.DomainSeparatorCollision.json | 252 - ...n.sol.0.4.25.DomainSeparatorCollision.json | 247 - ...e.sol.0.4.25.DomainSeparatorCollision.json | 252 - ...n.sol.0.5.16.DomainSeparatorCollision.json | 252 - ...n.sol.0.5.16.DomainSeparatorCollision.json | 247 - ...e.sol.0.5.16.DomainSeparatorCollision.json | 252 - ...n.sol.0.6.11.DomainSeparatorCollision.json | 252 - ...n.sol.0.6.11.DomainSeparatorCollision.json | 247 - ...e.sol.0.6.11.DomainSeparatorCollision.json | 252 - ...on.sol.0.7.6.DomainSeparatorCollision.json | 252 - ...on.sol.0.7.6.DomainSeparatorCollision.json | 247 - ...pe.sol.0.7.6.DomainSeparatorCollision.json | 252 - ...on.sol.0.8.0.DomainSeparatorCollision.json | 252 - ...on.sol.0.8.0.DomainSeparatorCollision.json | 247 - ...pe.sol.0.8.0.DomainSeparatorCollision.json | 252 - ...m_conversion.sol.0.4.2.EnumConversion.json | 222 - ....0.4.25.UnindexedERC20EventParameters.json | 244 - ....0.5.16.UnindexedERC20EventParameters.json | 244 - ....0.6.11.UnindexedERC20EventParameters.json | 244 - ...l.0.7.6.UnindexedERC20EventParameters.json | 244 - ...4.25.IncorrectERC20InterfaceDetection.json | 478 - ...5.16.IncorrectERC20InterfaceDetection.json | 478 - ...6.11.IncorrectERC20InterfaceDetection.json | 478 - ....7.6.IncorrectERC20InterfaceDetection.json | 478 - ....25.IncorrectERC721InterfaceDetection.json | 846 - ....16.IncorrectERC721InterfaceDetection.json | 846 - ....11.IncorrectERC721InterfaceDetection.json | 846 - ...7.6.IncorrectERC721InterfaceDetection.json | 846 - ...sol.0.4.25.MissingEventsAccessControl.json | 636 - ...sol.0.5.16.MissingEventsAccessControl.json | 636 - ...sol.0.6.11.MissingEventsAccessControl.json | 636 - ....sol.0.7.6.MissingEventsAccessControl.json | 636 - ...ic.sol.0.4.25.MissingEventsArithmetic.json | 504 - ...ic.sol.0.5.16.MissingEventsArithmetic.json | 504 - ...ic.sol.0.6.11.MissingEventsArithmetic.json | 504 - ...tic.sol.0.7.6.MissingEventsArithmetic.json | 504 - ..._function.sol.0.4.25.ExternalFunction.json | 3 - ...unction_2.sol.0.4.25.ExternalFunction.json | 3 - ...unction_3.sol.0.4.25.ExternalFunction.json | 181 - ..._function.sol.0.5.16.ExternalFunction.json | 3 - ...unction_2.sol.0.5.16.ExternalFunction.json | 3 - ...unction_3.sol.0.5.16.ExternalFunction.json | 268 - ..._function.sol.0.6.11.ExternalFunction.json | 3 - ...unction_2.sol.0.6.11.ExternalFunction.json | 3 - ...unction_3.sol.0.6.11.ExternalFunction.json | 3 - ...l_function.sol.0.7.6.ExternalFunction.json | 3 - ...function_2.sol.0.7.6.ExternalFunction.json | 3 - ...function_3.sol.0.7.6.ExternalFunction.json | 3 - ...s.sol.0.4.25.FunctionInitializedState.json | 459 - ...s.sol.0.5.16.FunctionInitializedState.json | 459 - ...s.sol.0.6.11.FunctionInitializedState.json | 459 - ...es.sol.0.7.6.FunctionInitializedState.json | 459 - ...variables.sol.0.4.25.CouldBeImmutable.json | 3 - ...variables.sol.0.5.16.CouldBeImmutable.json | 3 - ...variables.sol.0.6.11.CouldBeImmutable.json | 339 - ..._variables.sol.0.7.6.CouldBeImmutable.json | 334 - ..._variables.sol.0.8.0.CouldBeImmutable.json | 276 - ...ty.sol.0.4.25.IncorrectStrictEquality.json | 2552 -- ...ty.sol.0.5.16.IncorrectStrictEquality.json | 2552 -- ...ty.sol.0.6.11.IncorrectStrictEquality.json | 2552 -- ...ity.sol.0.7.6.IncorrectStrictEquality.json | 2552 -- ...t.sol.0.4.25.ModifierDefaultDetection.json | 320 - ...t.sol.0.5.16.ModifierDefaultDetection.json | 320 - ...t.sol.0.6.11.ModifierDefaultDetection.json | 320 - ...lt.sol.0.7.6.ModifierDefaultDetection.json | 320 - ..._mixup.sol.0.4.25.ShiftParameterMixup.json | 3 - ..._mixup.sol.0.5.16.ShiftParameterMixup.json | 3 - ..._mixup.sol.0.6.11.ShiftParameterMixup.json | 130 - ...r_mixup.sol.0.7.6.ShiftParameterMixup.json | 130 - ....25.IncorrectUnaryExpressionDetection.json | 521 - .../locked_ether.sol.0.4.25.LockedEther.json | 77 - .../locked_ether.sol.0.5.16.LockedEther.json | 77 - .../locked_ether.sol.0.6.11.LockedEther.json | 77 - .../locked_ether.sol.0.7.6.LockedEther.json | 77 - ..._level_calls.sol.0.4.25.LowLevelCalls.json | 120 - ..._level_calls.sol.0.5.16.LowLevelCalls.json | 120 - ..._level_calls.sol.0.6.11.LowLevelCalls.json | 120 - ...w_level_calls.sol.0.7.6.LowLevelCalls.json | 120 - ...n.sol.0.4.25.MappingDeletionDetection.json | 413 - ...n.sol.0.5.16.MappingDeletionDetection.json | 416 - ...n.sol.0.6.11.MappingDeletionDetection.json | 416 - ...on.sol.0.7.6.MappingDeletionDetection.json | 416 - ...terface.sol.0.4.25.MissingInheritance.json | 56 - ...terface.sol.0.5.16.MissingInheritance.json | 56 - ...terface.sol.0.6.11.MissingInheritance.json | 56 - ...nterface.sol.0.7.6.MissingInheritance.json | 56 - ...l.0.4.25.MissingZeroAddressValidation.json | 1472 - ...l.0.5.16.MissingZeroAddressValidation.json | 1472 - ...l.0.6.11.MissingZeroAddressValidation.json | 1472 - ...ol.0.7.6.MissingZeroAddressValidation.json | 1472 - ..._value_loop.sol.0.4.25.MsgValueInLoop.json | 514 - ..._value_loop.sol.0.5.16.MsgValueInLoop.json | 514 - ..._value_loop.sol.0.6.11.MsgValueInLoop.json | 514 - ...g_value_loop.sol.0.7.6.MsgValueInLoop.json | 514 - ...g_value_loop.sol.0.8.0.MsgValueInLoop.json | 514 - ...sol.0.4.22.MultipleConstructorSchemes.json | 149 - ...onvention.sol.0.4.25.NamingConvention.json | 1372 - ...constants.sol.0.4.25.NamingConvention.json | 3 - ...onvention.sol.0.5.16.NamingConvention.json | 1372 - ...constants.sol.0.5.16.NamingConvention.json | 3 - ...onvention.sol.0.6.11.NamingConvention.json | 1372 - ...constants.sol.0.6.11.NamingConvention.json | 3 - ...convention.sol.0.7.6.NamingConvention.json | 1372 - ..._constants.sol.0.7.6.NamingConvention.json | 3 - ...agma.0.4.25.sol.0.4.25.ConstantPragma.json | 65 - ...agma.0.5.16.sol.0.5.16.ConstantPragma.json | 65 - ...agma.0.6.11.sol.0.6.11.ConstantPragma.json | 65 - ...pragma.0.7.6.sol.0.7.6.ConstantPragma.json | 65 - .../comment.sol.0.8.2.ProtectedVariables.json | 400 - ...nested.sol.0.4.25.PublicMappingNested.json | 68 - ...ements.sol.0.4.25.RedundantStatements.json | 715 - ...ements.sol.0.5.16.RedundantStatements.json | 715 - ...ements.sol.0.6.11.RedundantStatements.json | 715 - ...tements.sol.0.7.6.RedundantStatements.json | 715 - ...cy-benign.sol.0.4.25.ReentrancyBenign.json | 4814 --- ...cy-benign.sol.0.5.16.ReentrancyBenign.json | 4855 --- ...cy-benign.sol.0.6.11.ReentrancyBenign.json | 4855 --- ...ncy-benign.sol.0.7.6.ReentrancyBenign.json | 4855 --- .../0.4.25/DAO.sol.0.4.25.ReentrancyEth.json | 9301 ------ .../reentrancy.sol.0.4.25.ReentrancyEth.json | 851 - ...ncy_indirect.sol.0.4.25.ReentrancyEth.json | 440 - .../reentrancy.sol.0.5.16.ReentrancyEth.json | 761 - ...ncy_indirect.sol.0.5.16.ReentrancyEth.json | 440 - .../reentrancy.sol.0.6.11.ReentrancyEth.json | 761 - ...ncy_indirect.sol.0.6.11.ReentrancyEth.json | 440 - .../reentrancy.sol.0.7.6.ReentrancyEth.json | 761 - ...ancy_indirect.sol.0.7.6.ReentrancyEth.json | 440 - ...red_comments.sol.0.8.10.ReentrancyEth.json | 231 - ...on_reentrant.sol.0.8.10.ReentrancyEth.json | 981 - ...ncy-events.sol.0.5.16.ReentrancyEvent.json | 218 - ...ncy-events.sol.0.6.11.ReentrancyEvent.json | 218 - ...ancy-events.sol.0.7.6.ReentrancyEvent.json | 218 - ...ol.0.4.25.ReentrancyReadBeforeWritten.json | 27535 ---------------- ...ol.0.4.25.ReentrancyReadBeforeWritten.json | 890 - ...ol.0.5.16.ReentrancyReadBeforeWritten.json | 3 - ...ol.0.5.16.ReentrancyReadBeforeWritten.json | 913 - ...ol.0.6.11.ReentrancyReadBeforeWritten.json | 3 - ...ol.0.6.11.ReentrancyReadBeforeWritten.json | 913 - ...sol.0.7.6.ReentrancyReadBeforeWritten.json | 3 - ...sol.0.7.6.ReentrancyReadBeforeWritten.json | 913 - ...sol.0.8.2.ReentrancyReadBeforeWritten.json | 3 - ...ctor.sol.0.4.21.ReusedBaseConstructor.json | 712 - ...ctor.sol.0.4.25.ReusedBaseConstructor.json | 1009 - ...erride.sol.0.4.25.RightToLeftOverride.json | 32 - ...erride.sol.0.5.16.RightToLeftOverride.json | 32 - ...erride.sol.0.6.11.RightToLeftOverride.json | 32 - ...verride.sol.0.8.0.RightToLeftOverride.json | 88 - ...sol.0.4.25.ShadowingAbstractDetection.json | 93 - ...sol.0.5.16.ShadowingAbstractDetection.json | 93 - ....sol.0.7.5.ShadowingAbstractDetection.json | 91 - ....sol.0.7.5.ShadowingAbstractDetection.json | 3 - ...ols.sol.0.4.25.BuiltinSymbolShadowing.json | 799 - ...ols.sol.0.5.16.BuiltinSymbolShadowing.json | 749 - ...al_variable.sol.0.4.25.LocalShadowing.json | 814 - ...al_variable.sol.0.5.16.LocalShadowing.json | 977 - ...al_variable.sol.0.6.11.LocalShadowing.json | 896 - ...cal_variable.sol.0.7.6.LocalShadowing.json | 892 - ...te_variable.sol.0.4.25.StateShadowing.json | 105 - ...te_variable.sol.0.5.16.StateShadowing.json | 105 - ...te_variable.sol.0.6.11.StateShadowing.json | 3 - ...gap_variable.sol.0.7.5.StateShadowing.json | 93 - ...ate_variable.sol.0.7.5.StateShadowing.json | 3 - ...ate_variable.sol.0.7.6.StateShadowing.json | 3 - ...ables.sol.0.4.25.SimilarVarsDetection.json | 149 - ...ables.sol.0.5.16.SimilarVarsDetection.json | 149 - ...ables.sol.0.6.11.SimilarVarsDetection.json | 149 - ...iables.sol.0.7.6.SimilarVarsDetection.json | 149 - .../static.sol.0.4.25.IncorrectSolc.json | 49 - .../static.sol.0.5.14.IncorrectSolc.json | 49 - .../dynamic_1.sol.0.5.16.IncorrectSolc.json | 50 - .../dynamic_2.sol.0.5.16.IncorrectSolc.json | 53 - .../static.sol.0.5.16.IncorrectSolc.json | 49 - .../static.sol.0.6.10.IncorrectSolc.json | 49 - .../dynamic_1.sol.0.6.11.IncorrectSolc.json | 50 - .../dynamic_2.sol.0.6.11.IncorrectSolc.json | 53 - .../static.sol.0.6.11.IncorrectSolc.json | 49 - .../0.7.4/static.sol.0.7.4.IncorrectSolc.json | 49 - .../dynamic_1.sol.0.7.6.IncorrectSolc.json | 50 - .../dynamic_2.sol.0.7.6.IncorrectSolc.json | 53 - .../0.7.6/static.sol.0.7.6.IncorrectSolc.json | 49 - ....sol.0.5.10.StorageSignedIntegerArray.json | 3 - ....sol.0.5.16.StorageSignedIntegerArray.json | 3 - .../0.4.25/suicidal.sol.0.4.25.Suicidal.json | 60 - .../0.5.16/suicidal.sol.0.5.16.Suicidal.json | 60 - .../0.6.11/suicidal.sol.0.6.11.Suicidal.json | 60 - .../0.7.6/suicidal.sol.0.7.6.Suicidal.json | 60 - ...utology.sol.0.4.25.TypeBasedTautology.json | 274 - ...utology.sol.0.5.16.TypeBasedTautology.json | 274 - ...utology.sol.0.6.11.TypeBasedTautology.json | 274 - ...autology.sol.0.7.6.TypeBasedTautology.json | 274 - .../timestamp.sol.0.4.25.Timestamp.json | 444 - .../timestamp.sol.0.5.16.Timestamp.json | 444 - .../timestamp.sol.0.6.11.Timestamp.json | 444 - .../0.7.6/timestamp.sol.0.7.6.Timestamp.json | 444 - ..._many_digits.sol.0.4.25.TooManyDigits.json | 980 - ..._many_digits.sol.0.5.16.TooManyDigits.json | 980 - ..._many_digits.sol.0.6.11.TooManyDigits.json | 990 - ...o_many_digits.sol.0.7.6.TooManyDigits.json | 970 - .../0.4.25/tx_origin.sol.0.4.25.TxOrigin.json | 316 - .../0.5.16/tx_origin.sol.0.5.16.TxOrigin.json | 316 - .../0.6.11/tx_origin.sol.0.6.11.TxOrigin.json | 316 - .../0.7.6/tx_origin.sol.0.7.6.TxOrigin.json | 316 - ...lowlevel.sol.0.4.25.UncheckedLowLevel.json | 130 - ...lowlevel.sol.0.5.16.UncheckedLowLevel.json | 132 - ...lowlevel.sol.0.6.11.UncheckedLowLevel.json | 132 - ..._lowlevel.sol.0.7.6.UncheckedLowLevel.json | 132 - ...checked_send.sol.0.4.25.UncheckedSend.json | 146 - ...checked_send.sol.0.5.16.UncheckedSend.json | 146 - ...checked_send.sol.0.6.11.UncheckedSend.json | 146 - ...nchecked_send.sol.0.7.6.UncheckedSend.json | 146 - ...transfers.sol.0.7.6.UncheckedTransfer.json | 428 - ...0.4.25.UnimplementedFunctionDetection.json | 336 - ...0.5.16.UnimplementedFunctionDetection.json | 190 - ...0.5.16.UnimplementedFunctionDetection.json | 3 - ...0.6.11.UnimplementedFunctionDetection.json | 263 - ...0.6.11.UnimplementedFunctionDetection.json | 3 - ....0.7.6.UnimplementedFunctionDetection.json | 263 - ....0.7.6.UnimplementedFunctionDetection.json | 3 - ....UninitializedFunctionPtrsConstructor.json | 421 - ....UninitializedFunctionPtrsConstructor.json | 3 - ....UninitializedFunctionPtrsConstructor.json | 421 - ...ble.sol.0.4.25.UninitializedLocalVars.json | 83 - ...ble.sol.0.5.16.UninitializedLocalVars.json | 83 - ...ble.sol.0.6.11.UninitializedLocalVars.json | 83 - ...able.sol.0.7.6.UninitializedLocalVars.json | 83 - ....4.25.UninitializedStateVarsDetection.json | 456 - ....5.16.UninitializedStateVarsDetection.json | 456 - ....6.11.UninitializedStateVarsDetection.json | 456 - ...0.7.6.UninitializedStateVarsDetection.json | 456 - ...r.sol.0.4.25.UninitializedStorageVars.json | 89 - ...r.sol.0.8.19.UninitializedStorageVars.json | 90 - ...ggy.sol.0.4.25.UnprotectedUpgradeable.json | 148 - ...xed.sol.0.4.25.UnprotectedUpgradeable.json | 3 - ...ted.sol.0.4.25.UnprotectedUpgradeable.json | 3 - ...ggy.sol.0.5.16.UnprotectedUpgradeable.json | 148 - ...xed.sol.0.5.16.UnprotectedUpgradeable.json | 3 - ...ted.sol.0.5.16.UnprotectedUpgradeable.json | 3 - ...ggy.sol.0.6.11.UnprotectedUpgradeable.json | 148 - ...xed.sol.0.6.11.UnprotectedUpgradeable.json | 3 - ...ted.sol.0.6.11.UnprotectedUpgradeable.json | 3 - ...uggy.sol.0.7.6.UnprotectedUpgradeable.json | 148 - ...ixed.sol.0.7.6.UnprotectedUpgradeable.json | 3 - ...sted.sol.0.7.6.UnprotectedUpgradeable.json | 3 - ...ggy.sol.0.8.15.UnprotectedUpgradeable.json | 145 - ...xed.sol.0.8.15.UnprotectedUpgradeable.json | 3 - ...ted.sol.0.8.15.UnprotectedUpgradeable.json | 3 - ..._return.sol.0.4.25.UnusedReturnValues.json | 328 - ..._return.sol.0.5.16.UnusedReturnValues.json | 328 - ..._return.sol.0.6.11.UnusedReturnValues.json | 328 - ...d_return.sol.0.7.6.UnusedReturnValues.json | 328 - ...used_state.sol.0.4.25.UnusedStateVars.json | 304 - ...used_state.sol.0.5.16.UnusedStateVars.json | 304 - ...used_state.sol.0.6.11.UnusedStateVars.json | 304 - ...nused_state.sol.0.7.6.UnusedStateVars.json | 304 - ...sing_this.sol.0.4.25.VarReadUsingThis.json | 3 - ...sing_this.sol.0.5.16.VarReadUsingThis.json | 736 - ...sing_this.sol.0.6.11.VarReadUsingThis.json | 736 - ...using_this.sol.0.7.6.VarReadUsingThis.json | 736 - ...sing_this.sol.0.8.15.VarReadUsingThis.json | 736 - ...l.sol.0.4.25.PredeclarationUsageLocal.json | 1299 - .../void-cst.sol.0.4.25.VoidConstructor.json | 124 - .../void-cst.sol.0.5.16.VoidConstructor.json | 124 - .../void-cst.sol.0.6.11.VoidConstructor.json | 124 - .../void-cst.sol.0.7.6.VoidConstructor.json | 124 - .../0.4.25/bad_prng.sol.0.4.25.BadPRNG.json | 644 - .../0.5.16/bad_prng.sol.0.5.16.BadPRNG.json | 644 - .../0.6.11/bad_prng.sol.0.6.11.BadPRNG.json | 644 - .../0.7.6/bad_prng.sol.0.7.6.BadPRNG.json | 644 - ...after-write.sol.0.8.0.WriteAfterWrite.json | 1070 - tests/e2e/detectors/test_detectors.py | 36 - 357 files changed, 190679 deletions(-) delete mode 100644 tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol.0.4.25.ABIEncoderV2Array.json delete mode 100644 tests/e2e/detectors/test_data/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol.0.5.10.ABIEncoderV2Array.json delete mode 100644 tests/e2e/detectors/test_data/abiencoderv2-array/0.5.11/storage_ABIEncoderV2_array.sol.0.5.11.ABIEncoderV2Array.json delete mode 100644 tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol.0.5.9.ABIEncoderV2Array.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol.0.4.25.ArbitrarySendErc20Permit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol.0.5.16.ArbitrarySendErc20Permit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol.0.6.11.ArbitrarySendErc20Permit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol.0.7.6.ArbitrarySendErc20Permit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol.0.8.0.ArbitrarySendErc20Permit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol.0.4.25.ArbitrarySendErc20NoPermit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol.0.5.16.ArbitrarySendErc20NoPermit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol.0.6.11.ArbitrarySendErc20NoPermit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol.0.7.6.ArbitrarySendErc20NoPermit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol.0.8.0.ArbitrarySendErc20NoPermit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol.0.8.0.ArbitrarySendErc20NoPermit.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol.0.4.25.ArbitrarySendEth.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol.0.5.16.ArbitrarySendEth.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol.0.6.11.ArbitrarySendEth.json delete mode 100644 tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol.0.7.6.ArbitrarySendEth.json delete mode 100644 tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol.0.4.25.ArrayByReference.json delete mode 100644 tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol.0.5.16.ArrayByReference.json delete mode 100644 tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol.0.6.11.ArrayByReference.json delete mode 100644 tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol.0.7.6.ArrayByReference.json delete mode 100644 tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol.0.4.25.Assembly.json delete mode 100644 tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol.0.4.25.Assembly.json delete mode 100644 tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol.0.5.16.Assembly.json delete mode 100644 tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol.0.5.16.Assembly.json delete mode 100644 tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol.0.6.11.Assembly.json delete mode 100644 tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol.0.6.11.Assembly.json delete mode 100644 tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol.0.7.6.Assembly.json delete mode 100644 tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol.0.7.6.Assembly.json delete mode 100644 tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol.0.4.25.AssertStateChange.json delete mode 100644 tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol.0.5.16.AssertStateChange.json delete mode 100644 tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol.0.6.11.AssertStateChange.json delete mode 100644 tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol.0.7.6.AssertStateChange.json delete mode 100644 tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol.0.4.25.Backdoor.json delete mode 100644 tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol.0.5.16.Backdoor.json delete mode 100644 tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol.0.6.11.Backdoor.json delete mode 100644 tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol.0.7.6.Backdoor.json delete mode 100644 tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol.0.4.25.BooleanConstantMisuse.json delete mode 100644 tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol.0.5.16.BooleanConstantMisuse.json delete mode 100644 tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol.0.6.11.BooleanConstantMisuse.json delete mode 100644 tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol.0.7.6.BooleanConstantMisuse.json delete mode 100644 tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol.0.4.25.BooleanEquality.json delete mode 100644 tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol.0.5.16.BooleanEquality.json delete mode 100644 tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol.0.6.11.BooleanEquality.json delete mode 100644 tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol.0.7.6.BooleanEquality.json delete mode 100644 tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol.0.4.25.MultipleCallsInLoop.json delete mode 100644 tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol.0.5.16.MultipleCallsInLoop.json delete mode 100644 tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol.0.6.11.MultipleCallsInLoop.json delete mode 100644 tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol.0.7.6.MultipleCallsInLoop.json delete mode 100644 tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol.0.4.25.CouldBeConstant.json delete mode 100644 tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol.0.5.16.CouldBeConstant.json delete mode 100644 tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol.0.6.11.CouldBeConstant.json delete mode 100644 tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol.0.7.6.CouldBeConstant.json delete mode 100644 tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol.0.8.0.CouldBeConstant.json delete mode 100644 tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol.0.4.25.ConstantFunctionsAsm.json delete mode 100644 tests/e2e/detectors/test_data/constant-function-asm/0.5.16/constant.sol.0.5.16.ConstantFunctionsAsm.json delete mode 100644 tests/e2e/detectors/test_data/constant-function-asm/0.6.11/constant.sol.0.6.11.ConstantFunctionsAsm.json delete mode 100644 tests/e2e/detectors/test_data/constant-function-asm/0.7.6/constant.sol.0.7.6.ConstantFunctionsAsm.json delete mode 100644 tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol.0.4.25.ConstantFunctionsState.json delete mode 100644 tests/e2e/detectors/test_data/constant-function-state/0.5.16/constant.sol.0.5.16.ConstantFunctionsState.json delete mode 100644 tests/e2e/detectors/test_data/constant-function-state/0.6.11/constant.sol.0.6.11.ConstantFunctionsState.json delete mode 100644 tests/e2e/detectors/test_data/constant-function-state/0.7.6/constant.sol.0.7.6.ConstantFunctionsState.json delete mode 100644 tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol.0.4.25.ArrayLengthAssignment.json delete mode 100644 tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol.0.5.16.ArrayLengthAssignment.json delete mode 100644 tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol.0.4.25.ControlledDelegateCall.json delete mode 100644 tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol.0.5.16.ControlledDelegateCall.json delete mode 100644 tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol.0.6.11.ControlledDelegateCall.json delete mode 100644 tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol.0.7.6.ControlledDelegateCall.json delete mode 100644 tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol.0.4.25.CostlyOperationsInLoop.json delete mode 100644 tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol.0.5.16.CostlyOperationsInLoop.json delete mode 100644 tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol.0.6.11.CostlyOperationsInLoop.json delete mode 100644 tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol.0.7.6.CostlyOperationsInLoop.json delete mode 100644 tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol.0.8.16.CyclomaticComplexity.json delete mode 100644 tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/LowCyclomaticComplexity.sol.0.8.16.CyclomaticComplexity.json delete mode 100644 tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol.0.8.0.DeadCode.json delete mode 100644 tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol.0.4.25.DelegatecallInLoop.json delete mode 100644 tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol.0.5.16.DelegatecallInLoop.json delete mode 100644 tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol.0.6.11.DelegatecallInLoop.json delete mode 100644 tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol.0.7.6.DelegatecallInLoop.json delete mode 100644 tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol.0.8.0.DelegatecallInLoop.json delete mode 100644 tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol.0.4.25.DeprecatedStandards.json delete mode 100644 tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol.0.4.25.DivideBeforeMultiply.json delete mode 100644 tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol.0.5.16.DivideBeforeMultiply.json delete mode 100644 tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol.0.6.11.DivideBeforeMultiply.json delete mode 100644 tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol.0.7.6.DivideBeforeMultiply.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol.0.4.25.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol.0.4.25.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol.0.4.25.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol.0.5.16.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol.0.5.16.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol.0.5.16.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol.0.6.11.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol.0.6.11.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol.0.6.11.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol.0.7.6.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol.0.7.6.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol.0.7.6.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol.0.8.0.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol.0.8.0.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol.0.8.0.DomainSeparatorCollision.json delete mode 100644 tests/e2e/detectors/test_data/enum-conversion/0.4.2/enum_conversion.sol.0.4.2.EnumConversion.json delete mode 100644 tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol.0.4.25.UnindexedERC20EventParameters.json delete mode 100644 tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol.0.5.16.UnindexedERC20EventParameters.json delete mode 100644 tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol.0.6.11.UnindexedERC20EventParameters.json delete mode 100644 tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol.0.7.6.UnindexedERC20EventParameters.json delete mode 100644 tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol.0.4.25.IncorrectERC20InterfaceDetection.json delete mode 100644 tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol.0.5.16.IncorrectERC20InterfaceDetection.json delete mode 100644 tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol.0.6.11.IncorrectERC20InterfaceDetection.json delete mode 100644 tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol.0.7.6.IncorrectERC20InterfaceDetection.json delete mode 100644 tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol.0.4.25.IncorrectERC721InterfaceDetection.json delete mode 100644 tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol.0.5.16.IncorrectERC721InterfaceDetection.json delete mode 100644 tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol.0.6.11.IncorrectERC721InterfaceDetection.json delete mode 100644 tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol.0.7.6.IncorrectERC721InterfaceDetection.json delete mode 100644 tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol.0.4.25.MissingEventsAccessControl.json delete mode 100644 tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol.0.5.16.MissingEventsAccessControl.json delete mode 100644 tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol.0.6.11.MissingEventsAccessControl.json delete mode 100644 tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol.0.7.6.MissingEventsAccessControl.json delete mode 100644 tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol.0.4.25.MissingEventsArithmetic.json delete mode 100644 tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol.0.5.16.MissingEventsArithmetic.json delete mode 100644 tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol.0.6.11.MissingEventsArithmetic.json delete mode 100644 tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol.0.7.6.MissingEventsArithmetic.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.4.25/external_function.sol.0.4.25.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.4.25/external_function_2.sol.0.4.25.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol.0.4.25.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.5.16/external_function.sol.0.5.16.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.5.16/external_function_2.sol.0.5.16.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol.0.5.16.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.6.11/external_function.sol.0.6.11.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.6.11/external_function_2.sol.0.6.11.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.6.11/external_function_3.sol.0.6.11.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.7.6/external_function.sol.0.7.6.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.7.6/external_function_2.sol.0.7.6.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/external-function/0.7.6/external_function_3.sol.0.7.6.ExternalFunction.json delete mode 100644 tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol.0.4.25.FunctionInitializedState.json delete mode 100644 tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol.0.5.16.FunctionInitializedState.json delete mode 100644 tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol.0.6.11.FunctionInitializedState.json delete mode 100644 tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol.0.7.6.FunctionInitializedState.json delete mode 100644 tests/e2e/detectors/test_data/immutable-states/0.4.25/immut_state_variables.sol.0.4.25.CouldBeImmutable.json delete mode 100644 tests/e2e/detectors/test_data/immutable-states/0.5.16/immut_state_variables.sol.0.5.16.CouldBeImmutable.json delete mode 100644 tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol.0.6.11.CouldBeImmutable.json delete mode 100644 tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol.0.7.6.CouldBeImmutable.json delete mode 100644 tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol.0.8.0.CouldBeImmutable.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol.0.4.25.IncorrectStrictEquality.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol.0.5.16.IncorrectStrictEquality.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol.0.6.11.IncorrectStrictEquality.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol.0.7.6.IncorrectStrictEquality.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol.0.4.25.ModifierDefaultDetection.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol.0.5.16.ModifierDefaultDetection.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol.0.6.11.ModifierDefaultDetection.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol.0.7.6.ModifierDefaultDetection.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-shift/0.4.25/shift_parameter_mixup.sol.0.4.25.ShiftParameterMixup.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-shift/0.5.16/shift_parameter_mixup.sol.0.5.16.ShiftParameterMixup.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol.0.6.11.ShiftParameterMixup.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol.0.7.6.ShiftParameterMixup.json delete mode 100644 tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol.0.4.25.IncorrectUnaryExpressionDetection.json delete mode 100644 tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol.0.4.25.LockedEther.json delete mode 100644 tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol.0.5.16.LockedEther.json delete mode 100644 tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol.0.6.11.LockedEther.json delete mode 100644 tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol.0.7.6.LockedEther.json delete mode 100644 tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol.0.4.25.LowLevelCalls.json delete mode 100644 tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol.0.5.16.LowLevelCalls.json delete mode 100644 tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol.0.6.11.LowLevelCalls.json delete mode 100644 tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol.0.7.6.LowLevelCalls.json delete mode 100644 tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol.0.4.25.MappingDeletionDetection.json delete mode 100644 tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol.0.5.16.MappingDeletionDetection.json delete mode 100644 tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol.0.6.11.MappingDeletionDetection.json delete mode 100644 tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol.0.7.6.MappingDeletionDetection.json delete mode 100644 tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol.0.4.25.MissingInheritance.json delete mode 100644 tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol.0.5.16.MissingInheritance.json delete mode 100644 tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol.0.6.11.MissingInheritance.json delete mode 100644 tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol.0.7.6.MissingInheritance.json delete mode 100644 tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol.0.4.25.MissingZeroAddressValidation.json delete mode 100644 tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol.0.5.16.MissingZeroAddressValidation.json delete mode 100644 tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol.0.6.11.MissingZeroAddressValidation.json delete mode 100644 tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol.0.7.6.MissingZeroAddressValidation.json delete mode 100644 tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol.0.4.25.MsgValueInLoop.json delete mode 100644 tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol.0.5.16.MsgValueInLoop.json delete mode 100644 tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol.0.6.11.MsgValueInLoop.json delete mode 100644 tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol.0.7.6.MsgValueInLoop.json delete mode 100644 tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol.0.8.0.MsgValueInLoop.json delete mode 100644 tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol.0.4.22.MultipleConstructorSchemes.json delete mode 100644 tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol.0.4.25.NamingConvention.json delete mode 100644 tests/e2e/detectors/test_data/naming-convention/0.4.25/no_warning_for_public_constants.sol.0.4.25.NamingConvention.json delete mode 100644 tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol.0.5.16.NamingConvention.json delete mode 100644 tests/e2e/detectors/test_data/naming-convention/0.5.16/no_warning_for_public_constants.sol.0.5.16.NamingConvention.json delete mode 100644 tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol.0.6.11.NamingConvention.json delete mode 100644 tests/e2e/detectors/test_data/naming-convention/0.6.11/no_warning_for_public_constants.sol.0.6.11.NamingConvention.json delete mode 100644 tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol.0.7.6.NamingConvention.json delete mode 100644 tests/e2e/detectors/test_data/naming-convention/0.7.6/no_warning_for_public_constants.sol.0.7.6.NamingConvention.json delete mode 100644 tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol.0.4.25.ConstantPragma.json delete mode 100644 tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol.0.5.16.ConstantPragma.json delete mode 100644 tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol.0.6.11.ConstantPragma.json delete mode 100644 tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol.0.7.6.ConstantPragma.json delete mode 100644 tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol.0.8.2.ProtectedVariables.json delete mode 100644 tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol.0.4.25.PublicMappingNested.json delete mode 100644 tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol.0.4.25.RedundantStatements.json delete mode 100644 tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol.0.5.16.RedundantStatements.json delete mode 100644 tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol.0.6.11.RedundantStatements.json delete mode 100644 tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol.0.7.6.RedundantStatements.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol.0.4.25.ReentrancyBenign.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol.0.5.16.ReentrancyBenign.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol.0.6.11.ReentrancyBenign.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol.0.7.6.ReentrancyBenign.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol.0.4.25.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol.0.4.25.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol.0.4.25.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol.0.5.16.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol.0.5.16.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol.0.6.11.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol.0.6.11.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol.0.7.6.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol.0.7.6.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol.0.8.10.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol.0.8.10.ReentrancyEth.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol.0.5.16.ReentrancyEvent.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol.0.6.11.ReentrancyEvent.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol.0.7.6.ReentrancyEvent.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol.0.4.25.ReentrancyReadBeforeWritten.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol.0.4.25.ReentrancyReadBeforeWritten.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/no-reentrancy-staticcall.sol.0.5.16.ReentrancyReadBeforeWritten.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol.0.5.16.ReentrancyReadBeforeWritten.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/no-reentrancy-staticcall.sol.0.6.11.ReentrancyReadBeforeWritten.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol.0.6.11.ReentrancyReadBeforeWritten.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/no-reentrancy-staticcall.sol.0.7.6.ReentrancyReadBeforeWritten.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol.0.7.6.ReentrancyReadBeforeWritten.json delete mode 100644 tests/e2e/detectors/test_data/reentrancy-no-eth/0.8.2/comment.sol.0.8.2.ReentrancyReadBeforeWritten.json delete mode 100644 tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol.0.4.21.ReusedBaseConstructor.json delete mode 100644 tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol.0.4.25.ReusedBaseConstructor.json delete mode 100644 tests/e2e/detectors/test_data/rtlo/0.4.25/right_to_left_override.sol.0.4.25.RightToLeftOverride.json delete mode 100644 tests/e2e/detectors/test_data/rtlo/0.5.16/right_to_left_override.sol.0.5.16.RightToLeftOverride.json delete mode 100644 tests/e2e/detectors/test_data/rtlo/0.6.11/right_to_left_override.sol.0.6.11.RightToLeftOverride.json delete mode 100644 tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol.0.8.0.RightToLeftOverride.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol.0.4.25.ShadowingAbstractDetection.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol.0.5.16.ShadowingAbstractDetection.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol.0.7.5.ShadowingAbstractDetection.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/shadowing_state_variable.sol.0.7.5.ShadowingAbstractDetection.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol.0.4.25.BuiltinSymbolShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol.0.5.16.BuiltinSymbolShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol.0.4.25.LocalShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol.0.5.16.LocalShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol.0.6.11.LocalShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol.0.7.6.LocalShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol.0.4.25.StateShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol.0.5.16.StateShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-state/0.6.11/shadowing_state_variable.sol.0.6.11.StateShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol.0.7.5.StateShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-state/0.7.5/shadowing_state_variable.sol.0.7.5.StateShadowing.json delete mode 100644 tests/e2e/detectors/test_data/shadowing-state/0.7.6/shadowing_state_variable.sol.0.7.6.StateShadowing.json delete mode 100644 tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol.0.4.25.SimilarVarsDetection.json delete mode 100644 tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol.0.5.16.SimilarVarsDetection.json delete mode 100644 tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol.0.6.11.SimilarVarsDetection.json delete mode 100644 tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol.0.7.6.SimilarVarsDetection.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol.0.4.25.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol.0.5.14.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol.0.5.16.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol.0.5.16.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol.0.5.16.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol.0.6.10.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol.0.6.11.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol.0.6.11.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol.0.6.11.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol.0.7.4.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol.0.7.6.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol.0.7.6.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol.0.7.6.IncorrectSolc.json delete mode 100644 tests/e2e/detectors/test_data/storage-array/0.5.10/storage_signed_integer_array.sol.0.5.10.StorageSignedIntegerArray.json delete mode 100644 tests/e2e/detectors/test_data/storage-array/0.5.16/storage_signed_integer_array.sol.0.5.16.StorageSignedIntegerArray.json delete mode 100644 tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol.0.4.25.Suicidal.json delete mode 100644 tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol.0.5.16.Suicidal.json delete mode 100644 tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol.0.6.11.Suicidal.json delete mode 100644 tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol.0.7.6.Suicidal.json delete mode 100644 tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol.0.4.25.TypeBasedTautology.json delete mode 100644 tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol.0.5.16.TypeBasedTautology.json delete mode 100644 tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol.0.6.11.TypeBasedTautology.json delete mode 100644 tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol.0.7.6.TypeBasedTautology.json delete mode 100644 tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol.0.4.25.Timestamp.json delete mode 100644 tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol.0.5.16.Timestamp.json delete mode 100644 tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol.0.6.11.Timestamp.json delete mode 100644 tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol.0.7.6.Timestamp.json delete mode 100644 tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol.0.4.25.TooManyDigits.json delete mode 100644 tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol.0.5.16.TooManyDigits.json delete mode 100644 tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol.0.6.11.TooManyDigits.json delete mode 100644 tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol.0.7.6.TooManyDigits.json delete mode 100644 tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol.0.4.25.TxOrigin.json delete mode 100644 tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol.0.5.16.TxOrigin.json delete mode 100644 tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol.0.6.11.TxOrigin.json delete mode 100644 tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol.0.7.6.TxOrigin.json delete mode 100644 tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol.0.4.25.UncheckedLowLevel.json delete mode 100644 tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol.0.5.16.UncheckedLowLevel.json delete mode 100644 tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol.0.6.11.UncheckedLowLevel.json delete mode 100644 tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol.0.7.6.UncheckedLowLevel.json delete mode 100644 tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol.0.4.25.UncheckedSend.json delete mode 100644 tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol.0.5.16.UncheckedSend.json delete mode 100644 tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol.0.6.11.UncheckedSend.json delete mode 100644 tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol.0.7.6.UncheckedSend.json delete mode 100644 tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol.0.7.6.UncheckedTransfer.json delete mode 100644 tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol.0.4.25.UnimplementedFunctionDetection.json delete mode 100644 tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol.0.5.16.UnimplementedFunctionDetection.json delete mode 100644 tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented_interfaces.sol.0.5.16.UnimplementedFunctionDetection.json delete mode 100644 tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol.0.6.11.UnimplementedFunctionDetection.json delete mode 100644 tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented_interfaces.sol.0.6.11.UnimplementedFunctionDetection.json delete mode 100644 tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol.0.7.6.UnimplementedFunctionDetection.json delete mode 100644 tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented_interfaces.sol.0.7.6.UnimplementedFunctionDetection.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol.0.4.25.UninitializedFunctionPtrsConstructor.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.16/uninitialized_function_ptr_constructor.sol.0.5.16.UninitializedFunctionPtrsConstructor.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol.0.5.8.UninitializedFunctionPtrsConstructor.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol.0.4.25.UninitializedLocalVars.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol.0.5.16.UninitializedLocalVars.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol.0.6.11.UninitializedLocalVars.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol.0.7.6.UninitializedLocalVars.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol.0.4.25.UninitializedStateVarsDetection.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol.0.5.16.UninitializedStateVarsDetection.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol.0.6.11.UninitializedStateVarsDetection.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol.0.7.6.UninitializedStateVarsDetection.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol.0.4.25.UninitializedStorageVars.json delete mode 100644 tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol.0.8.19.UninitializedStorageVars.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol.0.4.25.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Fixed.sol.0.4.25.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/whitelisted.sol.0.4.25.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol.0.5.16.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Fixed.sol.0.5.16.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/whitelisted.sol.0.5.16.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol.0.6.11.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Fixed.sol.0.6.11.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/whitelisted.sol.0.6.11.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol.0.7.6.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Fixed.sol.0.7.6.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/whitelisted.sol.0.7.6.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol.0.8.15.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Fixed.sol.0.8.15.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/whitelisted.sol.0.8.15.UnprotectedUpgradeable.json delete mode 100644 tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol.0.4.25.UnusedReturnValues.json delete mode 100644 tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol.0.5.16.UnusedReturnValues.json delete mode 100644 tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol.0.6.11.UnusedReturnValues.json delete mode 100644 tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol.0.7.6.UnusedReturnValues.json delete mode 100644 tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol.0.4.25.UnusedStateVars.json delete mode 100644 tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol.0.5.16.UnusedStateVars.json delete mode 100644 tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol.0.6.11.UnusedStateVars.json delete mode 100644 tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol.0.7.6.UnusedStateVars.json delete mode 100644 tests/e2e/detectors/test_data/var-read-using-this/0.4.25/var_read_using_this.sol.0.4.25.VarReadUsingThis.json delete mode 100644 tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol.0.5.16.VarReadUsingThis.json delete mode 100644 tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol.0.6.11.VarReadUsingThis.json delete mode 100644 tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol.0.7.6.VarReadUsingThis.json delete mode 100644 tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol.0.8.15.VarReadUsingThis.json delete mode 100644 tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol.0.4.25.PredeclarationUsageLocal.json delete mode 100644 tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol.0.4.25.VoidConstructor.json delete mode 100644 tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol.0.5.16.VoidConstructor.json delete mode 100644 tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol.0.6.11.VoidConstructor.json delete mode 100644 tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol.0.7.6.VoidConstructor.json delete mode 100644 tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol.0.4.25.BadPRNG.json delete mode 100644 tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol.0.5.16.BadPRNG.json delete mode 100644 tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol.0.6.11.BadPRNG.json delete mode 100644 tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol.0.7.6.BadPRNG.json delete mode 100644 tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol.0.8.0.WriteAfterWrite.json diff --git a/tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol.0.4.25.ABIEncoderV2Array.json b/tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol.0.4.25.ABIEncoderV2Array.json deleted file mode 100644 index ee268cdaa..000000000 --- a/tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol.0.4.25.ABIEncoderV2Array.json +++ /dev/null @@ -1,1804 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1076, - "length": 154, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 39, - 40, - 41 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "b = abi.encode(s)", - "source_mapping": { - "start": 1195, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 40 - ], - "starting_column": 5, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1076, - "length": 154, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 39, - 40, - 41 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "Function A.bad3() (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#39-41) trigger an abi encoding bug:\n\t- b = abi.encode(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#40)\n", - "markdown": "Function [A.bad3()](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L39-L41) trigger an abi encoding bug:\n\t- [b = abi.encode(s)](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L40)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L39-L41", - "id": "263bbb90844d3204496ff3dbf6cefcde2cd43fb91414e0c31340a3307bb1e61e", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 540, - "length": 61, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "this.bad0_external(bad_arr)", - "source_mapping": { - "start": 569, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 5, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 540, - "length": 61, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "Function A.bad0() (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#21-23) trigger an abi encoding bug:\n\t- this.bad0_external(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#22)\n", - "markdown": "Function [A.bad0()](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L21-L23) trigger an abi encoding bug:\n\t- [this.bad0_external(bad_arr)](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L21-L23", - "id": "2bbe072d30eb95e463ffdaaf3b5578622f10c36e6c65322a5c3a56ede8ace5f1", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1296, - "length": 148, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 44, - 45, - 46 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - }, - { - "type": "node", - "name": "event1_bad(bad_arr)", - "source_mapping": { - "start": 1415, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 45 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1296, - "length": 148, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 44, - 45, - 46 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - } - } - } - ], - "description": "Function A.bad4() (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#44-46) trigger an abi encoding bug:\n\t- event1_bad(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#45)\n", - "markdown": "Function [A.bad4()](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L44-L46) trigger an abi encoding bug:\n\t- [event1_bad(bad_arr)](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L45)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L44-L46", - "id": "35ffb290cd1c192cf8cb6d07a80648a5d31785a6c7864bf07ebfb455b9334d19", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 852, - "length": 160, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 34, - 35, - 36 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "b = abi.encode(bad_arr)", - "source_mapping": { - "start": 971, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 35 - ], - "starting_column": 5, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 852, - "length": 160, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 34, - 35, - 36 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "Function A.bad2() (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#34-36) trigger an abi encoding bug:\n\t- b = abi.encode(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#35)\n", - "markdown": "Function [A.bad2()](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L34-L36) trigger an abi encoding bug:\n\t- [b = abi.encode(bad_arr)](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L35)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L34-L36", - "id": "57a54f648776db8c80377afd961a3a141378dd19f6b32e13c215cc7539492b1b", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 726, - "length": 63, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(A.S[3])" - } - }, - { - "type": "node", - "name": "this.bad1_external(s)", - "source_mapping": { - "start": 763, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 30 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 726, - "length": 63, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(A.S[3])" - } - } - } - } - ], - "description": "Function A.bad1(A.S[3]) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#29-31) trigger an abi encoding bug:\n\t- this.bad1_external(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#30)\n", - "markdown": "Function [A.bad1(A.S[3])](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L29-L31) trigger an abi encoding bug:\n\t- [this.bad1_external(s)](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L30)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L29-L31", - "id": "86c66f3b307767eebada0cab8bf3a0a839ca10996314da44d69b6c9ed507a38a", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1511, - "length": 142, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 49, - 50, - 51 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - }, - { - "type": "node", - "name": "event2_bad(s)", - "source_mapping": { - "start": 1630, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 50 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1511, - "length": 142, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 49, - 50, - 51 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 2982, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - } - } - } - ], - "description": "Function A.bad5() (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#49-51) trigger an abi encoding bug:\n\t- event2_bad(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#50)\n", - "markdown": "Function [A.bad5()](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L49-L51) trigger an abi encoding bug:\n\t- [event2_bad(s)](tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L50)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L49-L51", - "id": "ae66161ced7aeecdd34531dd955380a0c0d8b8eb2a968a36de943b394d9ddaa7", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol.0.5.10.ABIEncoderV2Array.json b/tests/e2e/detectors/test_data/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol.0.5.10.ABIEncoderV2Array.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol.0.5.10.ABIEncoderV2Array.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/abiencoderv2-array/0.5.11/storage_ABIEncoderV2_array.sol.0.5.11.ABIEncoderV2Array.json b/tests/e2e/detectors/test_data/abiencoderv2-array/0.5.11/storage_ABIEncoderV2_array.sol.0.5.11.ABIEncoderV2Array.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/abiencoderv2-array/0.5.11/storage_ABIEncoderV2_array.sol.0.5.11.ABIEncoderV2Array.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol.0.5.9.ABIEncoderV2Array.json b/tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol.0.5.9.ABIEncoderV2Array.json deleted file mode 100644 index a91595864..000000000 --- a/tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol.0.5.9.ABIEncoderV2Array.json +++ /dev/null @@ -1,1804 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1536, - "length": 142, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 49, - 50, - 51 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - }, - { - "type": "node", - "name": "event2_bad(s)", - "source_mapping": { - "start": 1655, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 50 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1536, - "length": 142, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 49, - 50, - 51 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - } - } - } - ], - "description": "Function A.bad5() (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#49-51) trigger an abi encoding bug:\n\t- event2_bad(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#50)\n", - "markdown": "Function [A.bad5()](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L49-L51) trigger an abi encoding bug:\n\t- [event2_bad(s)](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L50)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L49-L51", - "id": "0bff4fdfffcfca62d7e949088e4f93613d96721addf90e93f6873969654792fb", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 549, - "length": 61, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "this.bad0_external(bad_arr)", - "source_mapping": { - "start": 578, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 5, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 549, - "length": 61, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "Function A.bad0() (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#21-23) trigger an abi encoding bug:\n\t- this.bad0_external(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#22)\n", - "markdown": "Function [A.bad0()](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L21-L23) trigger an abi encoding bug:\n\t- [this.bad0_external(bad_arr)](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L21-L23", - "id": "2b87f0298c47e810103ba2f06c6b042c1b3faef47996231ec0d884afd82cb99c", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1321, - "length": 148, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 44, - 45, - 46 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - }, - { - "type": "node", - "name": "event1_bad(bad_arr)", - "source_mapping": { - "start": 1440, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 45 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1321, - "length": 148, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 44, - 45, - 46 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - } - } - } - ], - "description": "Function A.bad4() (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#44-46) trigger an abi encoding bug:\n\t- event1_bad(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#45)\n", - "markdown": "Function [A.bad4()](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L44-L46) trigger an abi encoding bug:\n\t- [event1_bad(bad_arr)](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L45)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L44-L46", - "id": "3f05ebbaa8f7def9cf1d5619665846ab87d44ebc682887934c3906413cc05455", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 877, - "length": 160, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 34, - 35, - 36 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "b = abi.encode(bad_arr)", - "source_mapping": { - "start": 996, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 35 - ], - "starting_column": 5, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 877, - "length": 160, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 34, - 35, - 36 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "Function A.bad2() (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#34-36) trigger an abi encoding bug:\n\t- b = abi.encode(bad_arr) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#35)\n", - "markdown": "Function [A.bad2()](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L34-L36) trigger an abi encoding bug:\n\t- [b = abi.encode(bad_arr)](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L35)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L34-L36", - "id": "4a39131a0c51a364367a9c41ded3d7fa8fd529985bc27ce975fd1fdacabc6f5f", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 744, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(A.S[3])" - } - }, - { - "type": "node", - "name": "this.bad1_external(s)", - "source_mapping": { - "start": 788, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 30 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 744, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(A.S[3])" - } - } - } - } - ], - "description": "Function A.bad1(A.S[3]) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#29-31) trigger an abi encoding bug:\n\t- this.bad1_external(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#30)\n", - "markdown": "Function [A.bad1(A.S[3])](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L29-L31) trigger an abi encoding bug:\n\t- [this.bad1_external(s)](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L30)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L29-L31", - "id": "d7bba349f36a4dd00be0005454b0e7bfa536958075ca7575ef3d95b2d2666f40", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1101, - "length": 154, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 39, - 40, - 41 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "b = abi.encode(s)", - "source_mapping": { - "start": 1220, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 40 - ], - "starting_column": 5, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1101, - "length": 154, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 39, - 40, - 41 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 35, - "length": 3044, - "filename_relative": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "Function A.bad3() (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#39-41) trigger an abi encoding bug:\n\t- b = abi.encode(s) (tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#40)\n", - "markdown": "Function [A.bad3()](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L39-L41) trigger an abi encoding bug:\n\t- [b = abi.encode(s)](tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L40)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/abiencoderv2-array/0.5.9/storage_ABIEncoderV2_array.sol#L39-L41", - "id": "e6edc83d2902d4acb3d71593f26211658f88d3266d483632eab9380566ccee9d", - "check": "abiencoderv2-array", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol.0.4.25.ArbitrarySendErc20Permit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol.0.4.25.ArbitrarySendErc20Permit.json deleted file mode 100644 index d04fd7781..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol.0.4.25.ArbitrarySendErc20Permit.json +++ /dev/null @@ -1,748 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "int_transferFrom", - "source_mapping": { - "start": 1294, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(from,to,value)", - "source_mapping": { - "start": 1498, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 44 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "int_transferFrom", - "source_mapping": { - "start": 1294, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#42-45) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#44)\n", - "markdown": "[C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L42-L45) uses arbitrary from in transferFrom in combination with permit: [erc20.transferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L44)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L42-L45", - "id": "1ba817d0291e4f5d7fafb55c6278c82bcc093ececc435866bb7c9fec4df70948", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1546, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,to,value)", - "source_mapping": { - "start": 1738, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1546, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#47-50) uses arbitrary from in transferFrom in combination with permit: erc20.safeTransferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#49)\n", - "markdown": "[C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L47-L50) uses arbitrary from in transferFrom in combination with permit: [erc20.safeTransferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L49)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L47-L50", - "id": "54c86f8d5446e55e63466d1752a36ca614c0912786158f0d4d190c3fefb8b56f", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1794, - "length": 249, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(erc20,from,to,value)", - "source_mapping": { - "start": 1986, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 54 - ], - "starting_column": 9, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1794, - "length": 249, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#52-55) uses arbitrary from in transferFrom in combination with permit: SafeERC20.safeTransferFrom(erc20,from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#54)\n", - "markdown": "[C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L52-L55) uses arbitrary from in transferFrom in combination with permit: [SafeERC20.safeTransferFrom(erc20,from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L54)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L52-L55", - "id": "5d4e5fdce01109b3256e917c8586a8559ad4dde6b6b007c3cb85d99242ce18a6", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 843, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(from,to,value)", - "source_mapping": { - "start": 1033, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 843, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#32-35) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#34)\n", - "markdown": "[C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L32-L35) uses arbitrary from in transferFrom in combination with permit: [erc20.transferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L34)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.4.25/arbitrary_send_erc20_permit.sol#L32-L35", - "id": "fbbbc2ddd5f43443a8377441ac0ff5b1175fb3bed023f63576e053a59d4ba863", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol.0.5.16.ArbitrarySendErc20Permit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol.0.5.16.ArbitrarySendErc20Permit.json deleted file mode 100644 index 13cabeb3e..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol.0.5.16.ArbitrarySendErc20Permit.json +++ /dev/null @@ -1,748 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "int_transferFrom", - "source_mapping": { - "start": 1294, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(from,to,value)", - "source_mapping": { - "start": 1498, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 44 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "int_transferFrom", - "source_mapping": { - "start": 1294, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#42-45) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#44)\n", - "markdown": "[C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L42-L45) uses arbitrary from in transferFrom in combination with permit: [erc20.transferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L44)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L42-L45", - "id": "34abef96609043142b210115d49159561a631b0df81ee31f8d310267293a70d7", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1794, - "length": 249, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(erc20,from,to,value)", - "source_mapping": { - "start": 1986, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 54 - ], - "starting_column": 9, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1794, - "length": 249, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#52-55) uses arbitrary from in transferFrom in combination with permit: SafeERC20.safeTransferFrom(erc20,from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#54)\n", - "markdown": "[C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L52-L55) uses arbitrary from in transferFrom in combination with permit: [SafeERC20.safeTransferFrom(erc20,from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L54)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L52-L55", - "id": "5352ac253454c7ac5139d18b3068024bfd1adb2a3ba50e91846e685b87bebcab", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1546, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,to,value)", - "source_mapping": { - "start": 1738, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1546, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#47-50) uses arbitrary from in transferFrom in combination with permit: erc20.safeTransferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#49)\n", - "markdown": "[C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L47-L50) uses arbitrary from in transferFrom in combination with permit: [erc20.safeTransferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L49)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L47-L50", - "id": "97f68819cc099478a29e275378f30c57fc2bf8154cb8cb86c9b58788909e2486", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 843, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(from,to,value)", - "source_mapping": { - "start": 1033, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 843, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 613, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#32-35) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#34)\n", - "markdown": "[C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L32-L35) uses arbitrary from in transferFrom in combination with permit: [erc20.transferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L34)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.5.16/arbitrary_send_erc20_permit.sol#L32-L35", - "id": "eb616b56a991c8b3a6cb8f800394d615932a404f56814163c989dbf4f9307f9a", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol.0.6.11.ArbitrarySendErc20Permit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol.0.6.11.ArbitrarySendErc20Permit.json deleted file mode 100644 index 0a59ae426..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol.0.6.11.ArbitrarySendErc20Permit.json +++ /dev/null @@ -1,748 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1564, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 631, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,to,value)", - "source_mapping": { - "start": 1756, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1564, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 631, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#47-50) uses arbitrary from in transferFrom in combination with permit: erc20.safeTransferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#49)\n", - "markdown": "[C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L47-L50) uses arbitrary from in transferFrom in combination with permit: [erc20.safeTransferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L49)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L47-L50", - "id": "3b940dbd72bf4a925e83d4f699604f18cef6703b0febc33fd0c0d0e3ac5ca328", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1812, - "length": 249, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 631, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(erc20,from,to,value)", - "source_mapping": { - "start": 2004, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 54 - ], - "starting_column": 9, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1812, - "length": 249, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 631, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#52-55) uses arbitrary from in transferFrom in combination with permit: SafeERC20.safeTransferFrom(erc20,from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#54)\n", - "markdown": "[C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L52-L55) uses arbitrary from in transferFrom in combination with permit: [SafeERC20.safeTransferFrom(erc20,from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L54)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L52-L55", - "id": "7a0eb93cb62ee8dc1b21e0ac12f91f44457b306216d02b04c020adadd622a0ac", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "int_transferFrom", - "source_mapping": { - "start": 1312, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 631, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(from,to,value)", - "source_mapping": { - "start": 1516, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 44 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "int_transferFrom", - "source_mapping": { - "start": 1312, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 631, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#42-45) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#44)\n", - "markdown": "[C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L42-L45) uses arbitrary from in transferFrom in combination with permit: [erc20.transferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L44)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L42-L45", - "id": "7ee86024ca60eb5d5ad3be15c21fc9d7c301fa2a3a2700520459180a919c511f", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 861, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 631, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(from,to,value)", - "source_mapping": { - "start": 1051, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 861, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 631, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#32-35) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#34)\n", - "markdown": "[C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L32-L35) uses arbitrary from in transferFrom in combination with permit: [erc20.transferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L34)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.6.11/arbitrary_send_erc20_permit.sol#L32-L35", - "id": "fd1b8e822c71a24134a578815d9c495b60348cdf5eb2037d875bec85113d1278", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol.0.7.6.ArbitrarySendErc20Permit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol.0.7.6.ArbitrarySendErc20Permit.json deleted file mode 100644 index b02284556..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol.0.7.6.ArbitrarySendErc20Permit.json +++ /dev/null @@ -1,748 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "int_transferFrom", - "source_mapping": { - "start": 1311, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(from,to,value)", - "source_mapping": { - "start": 1515, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 44 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "int_transferFrom", - "source_mapping": { - "start": 1311, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#42-45) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#44)\n", - "markdown": "[C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L42-L45) uses arbitrary from in transferFrom in combination with permit: [erc20.transferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L44)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L42-L45", - "id": "05d766e5d9c761b562f761e6ee1e97c7b826967943e2d3b2a286a87bd7f34b3e", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 860, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(from,to,value)", - "source_mapping": { - "start": 1050, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 860, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#32-35) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#34)\n", - "markdown": "[C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L32-L35) uses arbitrary from in transferFrom in combination with permit: [erc20.transferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L34)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L32-L35", - "id": "2c296d80100d63f511472381b87d4d0b6b0f97344ba63542faf7f5ec09138bd3", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1811, - "length": 249, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(erc20,from,to,value)", - "source_mapping": { - "start": 2003, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 54 - ], - "starting_column": 9, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1811, - "length": 249, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#52-55) uses arbitrary from in transferFrom in combination with permit: SafeERC20.safeTransferFrom(erc20,from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#54)\n", - "markdown": "[C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L52-L55) uses arbitrary from in transferFrom in combination with permit: [SafeERC20.safeTransferFrom(erc20,from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L54)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L52-L55", - "id": "820447a866858955ff2d6be25ff0a2e0acbd0586d9ee18a28cddc3d863b113a6", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1563, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,to,value)", - "source_mapping": { - "start": 1755, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1563, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#47-50) uses arbitrary from in transferFrom in combination with permit: erc20.safeTransferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#49)\n", - "markdown": "[C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L47-L50) uses arbitrary from in transferFrom in combination with permit: [erc20.safeTransferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L49)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.7.6/arbitrary_send_erc20_permit.sol#L47-L50", - "id": "fe60744fd1115f5cab695c8a4cef91187c6594b8b9133d9c8c42871a69bc44b1", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol.0.8.0.ArbitrarySendErc20Permit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol.0.8.0.ArbitrarySendErc20Permit.json deleted file mode 100644 index d744eeec7..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol.0.8.0.ArbitrarySendErc20Permit.json +++ /dev/null @@ -1,748 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1563, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,to,value)", - "source_mapping": { - "start": 1755, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1563, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#47-50) uses arbitrary from in transferFrom in combination with permit: erc20.safeTransferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#49)\n", - "markdown": "[C.bad3(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L47-L50) uses arbitrary from in transferFrom in combination with permit: [erc20.safeTransferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L49)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L47-L50", - "id": "42f3ef187f63f7af5b0d861ce439907349e82c4feee026975dac0919e31e6ccb", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1811, - "length": 249, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(erc20,from,to,value)", - "source_mapping": { - "start": 2003, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 54 - ], - "starting_column": 9, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1811, - "length": 249, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#52-55) uses arbitrary from in transferFrom in combination with permit: SafeERC20.safeTransferFrom(erc20,from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#54)\n", - "markdown": "[C.bad4(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L52-L55) uses arbitrary from in transferFrom in combination with permit: [SafeERC20.safeTransferFrom(erc20,from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L54)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L52-L55", - "id": "e32264ced59dae2e3c1b6628c7e6877c4a29fd69e9f798b897b3d6bda04dc70d", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "int_transferFrom", - "source_mapping": { - "start": 1311, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(from,to,value)", - "source_mapping": { - "start": 1515, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 44 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "int_transferFrom", - "source_mapping": { - "start": 1311, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#42-45) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#44)\n", - "markdown": "[C.int_transferFrom(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L42-L45) uses arbitrary from in transferFrom in combination with permit: [erc20.transferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L44)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L42-L45", - "id": "e9b4e54b9329b9564418eb9152c19271a5cfe4f8f6785f213dd324b219ba9dbb", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 860, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(from,to,value)", - "source_mapping": { - "start": 1050, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 860, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 630, - "length": 1433, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)" - } - } - } - } - ], - "description": "C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#32-35) uses arbitrary from in transferFrom in combination with permit: erc20.transferFrom(from,to,value) (tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#34)\n", - "markdown": "[C.bad1(address,uint256,uint256,uint8,bytes32,bytes32,address)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L32-L35) uses arbitrary from in transferFrom in combination with permit: [erc20.transferFrom(from,to,value)](tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L34)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20-permit/0.8.0/arbitrary_send_erc20_permit.sol#L32-L35", - "id": "efbc4aede4068fb46033ea04969b6584f373d9fa8d1047834b951aaa1207b7a2", - "check": "arbitrary-send-erc20-permit", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol.0.4.25.ArbitrarySendErc20NoPermit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol.0.4.25.ArbitrarySendErc20NoPermit.json deleted file mode 100644 index b1a43d405..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol.0.4.25.ArbitrarySendErc20NoPermit.json +++ /dev/null @@ -1,688 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1702, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,address,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(erc20,from,to,amount)", - "source_mapping": { - "start": 1777, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 66 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1702, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,address,uint256)" - } - } - } - } - ], - "description": "C.bad4(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#65-67) uses arbitrary from in transferFrom: SafeERC20.safeTransferFrom(erc20,from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#66)\n", - "markdown": "[C.bad4(address,address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#L65-L67) uses arbitrary from in transferFrom: [SafeERC20.safeTransferFrom(erc20,from,to,amount)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#L66)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#L65-L67", - "id": "782ac6309a674c4c454f4addc1aa90d361333653e69ef1ae8931414391e8d29f", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 780, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(notsend,to,am)", - "source_mapping": { - "start": 835, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 36 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 780, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256)" - } - } - } - } - ], - "description": "C.bad1(address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#35-37) uses arbitrary from in transferFrom: erc20.transferFrom(notsend,to,am) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#36)\n", - "markdown": "[C.bad1(address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#L35-L37) uses arbitrary from in transferFrom: [erc20.transferFrom(notsend,to,am)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#L36)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#L35-L37", - "id": "d8d440df76ab0715158f642a7390c91f0ab28ca9f0a1df990a8115f489a62e55", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1434, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,address,uint256)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,to,amount)", - "source_mapping": { - "start": 1509, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 58 - ], - "starting_column": 9, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1434, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,address,uint256)" - } - } - } - } - ], - "description": "C.bad3(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#57-59) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#58)\n", - "markdown": "[C.bad3(address,address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#L57-L59) uses arbitrary from in transferFrom: [erc20.safeTransferFrom(from,to,amount)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#L58)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.4.25/arbitrary_send_erc20.sol#L57-L59", - "id": "f6dc295bfacef59e39a209c62d7a9c4a4470255c0098e7cc23d084ed666e29f0", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol.0.5.16.ArbitrarySendErc20NoPermit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol.0.5.16.ArbitrarySendErc20NoPermit.json deleted file mode 100644 index b58297d0d..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol.0.5.16.ArbitrarySendErc20NoPermit.json +++ /dev/null @@ -1,688 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1702, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,address,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(erc20,from,to,amount)", - "source_mapping": { - "start": 1777, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 66 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1702, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,address,uint256)" - } - } - } - } - ], - "description": "C.bad4(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#65-67) uses arbitrary from in transferFrom: SafeERC20.safeTransferFrom(erc20,from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#66)\n", - "markdown": "[C.bad4(address,address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#L65-L67) uses arbitrary from in transferFrom: [SafeERC20.safeTransferFrom(erc20,from,to,amount)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#L66)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#L65-L67", - "id": "032453562de7f764a4207b76aa3ec875a21980644c4d3418fc186ec0a19a74f7", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1434, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,address,uint256)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,to,amount)", - "source_mapping": { - "start": 1509, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 58 - ], - "starting_column": 9, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1434, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,address,uint256)" - } - } - } - } - ], - "description": "C.bad3(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#57-59) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#58)\n", - "markdown": "[C.bad3(address,address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#L57-L59) uses arbitrary from in transferFrom: [erc20.safeTransferFrom(from,to,amount)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#L58)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#L57-L59", - "id": "24af03aa72fded3faedf8cd9a6078c8d34d43e50b001678c983d7e85ff28a70f", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 780, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(notsend,to,am)", - "source_mapping": { - "start": 835, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 36 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 780, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 394, - "length": 1717, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256)" - } - } - } - } - ], - "description": "C.bad1(address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#35-37) uses arbitrary from in transferFrom: erc20.transferFrom(notsend,to,am) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#36)\n", - "markdown": "[C.bad1(address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#L35-L37) uses arbitrary from in transferFrom: [erc20.transferFrom(notsend,to,am)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#L36)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.5.16/arbitrary_send_erc20.sol#L35-L37", - "id": "fdb4385a68f2d66f61e29e141233b969c36b21bcc2c57da25bd49f77a0c22c14", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol.0.6.11.ArbitrarySendErc20NoPermit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol.0.6.11.ArbitrarySendErc20NoPermit.json deleted file mode 100644 index 1f87d7e93..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol.0.6.11.ArbitrarySendErc20NoPermit.json +++ /dev/null @@ -1,688 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 789, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 403, - "length": 1721, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(notsend,to,am)", - "source_mapping": { - "start": 844, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 36 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 789, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 403, - "length": 1721, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256)" - } - } - } - } - ], - "description": "C.bad1(address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#35-37) uses arbitrary from in transferFrom: erc20.transferFrom(notsend,to,am) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#36)\n", - "markdown": "[C.bad1(address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#L35-L37) uses arbitrary from in transferFrom: [erc20.transferFrom(notsend,to,am)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#L36)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#L35-L37", - "id": "3ee4e04cb082e655c1efd1510b30cdf4eb6a482b260ea7201c9169fba4ab9b85", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1443, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 403, - "length": 1721, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,address,uint256)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,to,amount)", - "source_mapping": { - "start": 1518, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 58 - ], - "starting_column": 9, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1443, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 403, - "length": 1721, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,address,uint256)" - } - } - } - } - ], - "description": "C.bad3(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#57-59) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#58)\n", - "markdown": "[C.bad3(address,address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#L57-L59) uses arbitrary from in transferFrom: [erc20.safeTransferFrom(from,to,amount)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#L58)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#L57-L59", - "id": "de8b51ae7497fbc596bd29f45432f5e9894574af684b3b65dae7ddd45cb8c71a", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1711, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 403, - "length": 1721, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,address,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(erc20,from,to,amount)", - "source_mapping": { - "start": 1786, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 66 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1711, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 403, - "length": 1721, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,address,uint256)" - } - } - } - } - ], - "description": "C.bad4(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#65-67) uses arbitrary from in transferFrom: SafeERC20.safeTransferFrom(erc20,from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#66)\n", - "markdown": "[C.bad4(address,address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#L65-L67) uses arbitrary from in transferFrom: [SafeERC20.safeTransferFrom(erc20,from,to,amount)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#L66)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.6.11/arbitrary_send_erc20.sol#L65-L67", - "id": "f8361d02867f34ef252d248d5c7c1d0d4570210ce04b6a4f07f921950d80233b", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol.0.7.6.ArbitrarySendErc20NoPermit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol.0.7.6.ArbitrarySendErc20NoPermit.json deleted file mode 100644 index 4ce050420..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol.0.7.6.ArbitrarySendErc20NoPermit.json +++ /dev/null @@ -1,688 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1703, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,address,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(erc20,from,to,amount)", - "source_mapping": { - "start": 1778, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 66 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1703, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,address,uint256)" - } - } - } - } - ], - "description": "C.bad4(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#65-67) uses arbitrary from in transferFrom: SafeERC20.safeTransferFrom(erc20,from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#66)\n", - "markdown": "[C.bad4(address,address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#L65-L67) uses arbitrary from in transferFrom: [SafeERC20.safeTransferFrom(erc20,from,to,amount)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#L66)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#L65-L67", - "id": "a6cc1c7767af60c53ded524a69ea19d45f030de39ca0d5838f9b9790c40d52fc", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1435, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,address,uint256)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,to,amount)", - "source_mapping": { - "start": 1510, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 58 - ], - "starting_column": 9, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1435, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,address,uint256)" - } - } - } - } - ], - "description": "C.bad3(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#57-59) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#58)\n", - "markdown": "[C.bad3(address,address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#L57-L59) uses arbitrary from in transferFrom: [erc20.safeTransferFrom(from,to,amount)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#L58)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#L57-L59", - "id": "d08a69b25eee59446b955d7dc80198afec5c7c05562f489dac38ad172f318e87", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 781, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(notsend,to,am)", - "source_mapping": { - "start": 836, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 36 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 781, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256)" - } - } - } - } - ], - "description": "C.bad1(address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#35-37) uses arbitrary from in transferFrom: erc20.transferFrom(notsend,to,am) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#36)\n", - "markdown": "[C.bad1(address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#L35-L37) uses arbitrary from in transferFrom: [erc20.transferFrom(notsend,to,am)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#L36)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.7.6/arbitrary_send_erc20.sol#L35-L37", - "id": "e2456673798cea3df117f0bf62c3394f4361a4f0ff4e924ae9dfbd9908f19a20", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol.0.8.0.ArbitrarySendErc20NoPermit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol.0.8.0.ArbitrarySendErc20NoPermit.json deleted file mode 100644 index 530c866dc..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol.0.8.0.ArbitrarySendErc20NoPermit.json +++ /dev/null @@ -1,688 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 781, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256)" - } - }, - { - "type": "node", - "name": "erc20.transferFrom(notsend,to,am)", - "source_mapping": { - "start": 836, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 36 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 781, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address,uint256)" - } - } - } - } - ], - "description": "C.bad1(address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#35-37) uses arbitrary from in transferFrom: erc20.transferFrom(notsend,to,am) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#36)\n", - "markdown": "[C.bad1(address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#L35-L37) uses arbitrary from in transferFrom: [erc20.transferFrom(notsend,to,am)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#L36)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#L35-L37", - "id": "27d7e29cffdefedcd7bda099409891a2046976d0b7a2f64eaa28877112df7b7e", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1435, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,address,uint256)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,to,amount)", - "source_mapping": { - "start": 1510, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 58 - ], - "starting_column": 9, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1435, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 57, - 58, - 59 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3(address,address,uint256)" - } - } - } - } - ], - "description": "C.bad3(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#57-59) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#58)\n", - "markdown": "[C.bad3(address,address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#L57-L59) uses arbitrary from in transferFrom: [erc20.safeTransferFrom(from,to,amount)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#L58)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#L57-L59", - "id": "42ab0e5179e6f2a124a6cb4812054d724422d55c2032dd0708bc72c05a66e98d", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1703, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,address,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(erc20,from,to,amount)", - "source_mapping": { - "start": 1778, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 66 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1703, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 65, - 66, - 67 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 402, - "length": 1710, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4(address,address,uint256)" - } - } - } - } - ], - "description": "C.bad4(address,address,uint256) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#65-67) uses arbitrary from in transferFrom: SafeERC20.safeTransferFrom(erc20,from,to,amount) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#66)\n", - "markdown": "[C.bad4(address,address,uint256)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#L65-L67) uses arbitrary from in transferFrom: [SafeERC20.safeTransferFrom(erc20,from,to,amount)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#L66)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20.sol#L65-L67", - "id": "5b4614fc9fd5c01b1ca3f3713366e33d7b87b516646cc349aa3b383a2d4cef6b", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol.0.8.0.ArbitrarySendErc20NoPermit.json b/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol.0.8.0.ArbitrarySendErc20NoPermit.json deleted file mode 100644 index c4d181524..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol.0.8.0.ArbitrarySendErc20NoPermit.json +++ /dev/null @@ -1,126 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 196, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 138, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - }, - { - "type": "node", - "name": "erc20.safeTransferFrom(from,address(0x1),90)", - "source_mapping": { - "start": 234, - "length": 46, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 3, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 196, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 138, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - } - } - } - ], - "description": "T.bad(address) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol#11-13) uses arbitrary from in transferFrom: erc20.safeTransferFrom(from,address(0x1),90) (tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol#12)\n", - "markdown": "[T.bad(address)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol#L11-L13) uses arbitrary from in transferFrom: [erc20.safeTransferFrom(from,address(0x1),90)](tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-erc20/0.8.0/arbitrary_send_erc20_inheritance.sol#L11-L13", - "id": "60e953d6175f0ac988d7896f836c2963387efc3064ea8dc46e7f5a88b1792d0a", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol.0.4.25.ArbitrarySendEth.json b/tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol.0.4.25.ArbitrarySendEth.json deleted file mode 100644 index c65a497fd..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol.0.4.25.ArbitrarySendEth.json +++ /dev/null @@ -1,380 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "indirect", - "source_mapping": { - "start": 301, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 869, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "indirect()" - } - }, - { - "type": "node", - "name": "destination.send(address(this).balance)", - "source_mapping": { - "start": 337, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "indirect", - "source_mapping": { - "start": 301, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 869, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "indirect()" - } - } - } - } - ], - "description": "Test.indirect() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#20)\n", - "markdown": "[Test.indirect()](tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#L19-L21) sends eth to arbitrary user\n\tDangerous calls:\n\t- [destination.send(address(this).balance)](tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#L19-L21", - "id": "a117e017d88dcf44b5a68050b9cc79263760734b6e9fa1c5627484395035afab", - "check": "arbitrary-send-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "direct", - "source_mapping": { - "start": 147, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 869, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "direct()" - } - }, - { - "type": "node", - "name": "msg.sender.send(address(this).balance)", - "source_mapping": { - "start": 181, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "direct", - "source_mapping": { - "start": 147, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 869, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "direct()" - } - } - } - } - ], - "description": "Test.direct() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#12)\n", - "markdown": "[Test.direct()](tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#L11-L13) sends eth to arbitrary user\n\tDangerous calls:\n\t- [msg.sender.send(address(this).balance)](tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.4.25/arbitrary_send_eth.sol#L11-L13", - "id": "a3f691d79400cfbc468d13a348697863660c3460ceebfea85a6f5c07c9f93a1f", - "check": "arbitrary-send-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol.0.5.16.ArbitrarySendEth.json b/tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol.0.5.16.ArbitrarySendEth.json deleted file mode 100644 index 0e85e427f..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol.0.5.16.ArbitrarySendEth.json +++ /dev/null @@ -1,380 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "direct", - "source_mapping": { - "start": 162, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "direct()" - } - }, - { - "type": "node", - "name": "msg.sender.send(address(this).balance)", - "source_mapping": { - "start": 196, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "direct", - "source_mapping": { - "start": 162, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "direct()" - } - } - } - } - ], - "description": "Test.direct() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#12)\n", - "markdown": "[Test.direct()](tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#L11-L13) sends eth to arbitrary user\n\tDangerous calls:\n\t- [msg.sender.send(address(this).balance)](tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#L11-L13", - "id": "4ccd608ef16f83d45efea33bbe26da98fa322c8551e1ce4dfcc718511a328f94", - "check": "arbitrary-send-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "indirect", - "source_mapping": { - "start": 316, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "indirect()" - } - }, - { - "type": "node", - "name": "destination.send(address(this).balance)", - "source_mapping": { - "start": 352, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "indirect", - "source_mapping": { - "start": 316, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "indirect()" - } - } - } - } - ], - "description": "Test.indirect() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#20)\n", - "markdown": "[Test.indirect()](tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#L19-L21) sends eth to arbitrary user\n\tDangerous calls:\n\t- [destination.send(address(this).balance)](tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.5.16/arbitrary_send_eth.sol#L19-L21", - "id": "8e28e46dabfb6c22ddc3d768097fd8c1a9c5331cba0480e540df2173a35db644", - "check": "arbitrary-send-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol.0.6.11.ArbitrarySendEth.json b/tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol.0.6.11.ArbitrarySendEth.json deleted file mode 100644 index de345d832..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol.0.6.11.ArbitrarySendEth.json +++ /dev/null @@ -1,380 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "indirect", - "source_mapping": { - "start": 316, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "indirect()" - } - }, - { - "type": "node", - "name": "destination.send(address(this).balance)", - "source_mapping": { - "start": 352, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "indirect", - "source_mapping": { - "start": 316, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "indirect()" - } - } - } - } - ], - "description": "Test.indirect() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#20)\n", - "markdown": "[Test.indirect()](tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#L19-L21) sends eth to arbitrary user\n\tDangerous calls:\n\t- [destination.send(address(this).balance)](tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#L19-L21", - "id": "5ba8311b7d5a57cdfdf3009f594b708dcee0e532b6789fa2602b1e497cab78ff", - "check": "arbitrary-send-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "direct", - "source_mapping": { - "start": 162, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "direct()" - } - }, - { - "type": "node", - "name": "msg.sender.send(address(this).balance)", - "source_mapping": { - "start": 196, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "direct", - "source_mapping": { - "start": 162, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "direct()" - } - } - } - } - ], - "description": "Test.direct() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#12)\n", - "markdown": "[Test.direct()](tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#L11-L13) sends eth to arbitrary user\n\tDangerous calls:\n\t- [msg.sender.send(address(this).balance)](tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.6.11/arbitrary_send_eth.sol#L11-L13", - "id": "f0e0b1ffc69d83ae26e2036986f8e50b1fd7b6b38bcd00becc5505cc83ea59f7", - "check": "arbitrary-send-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol.0.7.6.ArbitrarySendEth.json b/tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol.0.7.6.ArbitrarySendEth.json deleted file mode 100644 index cc93e1ec2..000000000 --- a/tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol.0.7.6.ArbitrarySendEth.json +++ /dev/null @@ -1,380 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "direct", - "source_mapping": { - "start": 162, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "direct()" - } - }, - { - "type": "node", - "name": "msg.sender.send(address(this).balance)", - "source_mapping": { - "start": 196, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "direct", - "source_mapping": { - "start": 162, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "direct()" - } - } - } - } - ], - "description": "Test.direct() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#12)\n", - "markdown": "[Test.direct()](tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#L11-L13) sends eth to arbitrary user\n\tDangerous calls:\n\t- [msg.sender.send(address(this).balance)](tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#L11-L13", - "id": "21e5bba25b77457329b8b6b5257f9977083960c2c9b693579477999f9aceacdd", - "check": "arbitrary-send-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "indirect", - "source_mapping": { - "start": 316, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "indirect()" - } - }, - { - "type": "node", - "name": "destination.send(address(this).balance)", - "source_mapping": { - "start": 352, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "indirect", - "source_mapping": { - "start": 316, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 884, - "filename_relative": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "indirect()" - } - } - } - } - ], - "description": "Test.indirect() (tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#20)\n", - "markdown": "[Test.indirect()](tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#L19-L21) sends eth to arbitrary user\n\tDangerous calls:\n\t- [destination.send(address(this).balance)](tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/arbitrary-send-eth/0.7.6/arbitrary_send_eth.sol#L19-L21", - "id": "6094c4914d5770617670fa1fb7e3debc390308148f7957380c6675d4d20ba328", - "check": "arbitrary-send-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol.0.4.25.ArrayByReference.json b/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol.0.4.25.ArrayByReference.json deleted file mode 100644 index 525bdd272..000000000 --- a/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol.0.4.25.ArrayByReference.json +++ /dev/null @@ -1,1301 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 855, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 688, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 822, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 39 - ], - "starting_column": 5, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 688, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 571, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[D.f()](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L42-L48) passes array [D.x](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L39)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L42-L48", - "id": "019912974eabe7e8b1e67ca05b342e5106de13fa93fa0adf599a4259c425bd54", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 855, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 688, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 822, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 39 - ], - "starting_column": 5, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 688, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[D.f()](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L42-L48) passes array [D.x](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L39)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L42-L48", - "id": "1520955a53c36e391abbaf648a91a5a12d432f0f4746b0a8187d0988a6a66846", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 40, - "length": 167, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 17, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L4-L8) passes array [C.x](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L2)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L4-L8", - "id": "79a462bf06ae529ad099f2170100298da30766fcc06884e03436d2b53110d208", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 40, - "length": 167, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 17, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 571, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L4-L8) passes array [C.x](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L2)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L4-L8", - "id": "7f1eda9be40002affd2e8e31d172d3ee3374f37b1106118c79f4add7a133bbd0", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 243, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 571, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[C.g()](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L11)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L10-L15", - "id": "8655e8acd84a6e8152acd2d9730ea0dfdda0723e09b2dcbfdbbeb8da8bd04fa5", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 243, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 686, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[C.g()](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L11)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#L10-L15", - "id": "d039169712808e785bf2e53f322c1c6fcd6b93a0a0c17f1a701addd09ed83996", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol.0.5.16.ArrayByReference.json b/tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol.0.5.16.ArrayByReference.json deleted file mode 100644 index 3b56351ab..000000000 --- a/tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol.0.5.16.ArrayByReference.json +++ /dev/null @@ -1,1301 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 869, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 836, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 39 - ], - "starting_column": 5, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 578, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[D.f()](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L42-L48) passes array [D.x](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L39)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L42-L48", - "id": "019912974eabe7e8b1e67ca05b342e5106de13fa93fa0adf599a4259c425bd54", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 869, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 836, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 39 - ], - "starting_column": 5, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[D.f()](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L42-L48) passes array [D.x](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L39)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L42-L48", - "id": "1520955a53c36e391abbaf648a91a5a12d432f0f4746b0a8187d0988a6a66846", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 40, - "length": 167, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 17, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L4-L8) passes array [C.x](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L2)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L4-L8", - "id": "79a462bf06ae529ad099f2170100298da30766fcc06884e03436d2b53110d208", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 40, - "length": 167, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 17, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 578, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L4-L8) passes array [C.x](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L2)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L4-L8", - "id": "7f1eda9be40002affd2e8e31d172d3ee3374f37b1106118c79f4add7a133bbd0", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 243, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 578, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[C.g()](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L11)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L10-L15", - "id": "8655e8acd84a6e8152acd2d9730ea0dfdda0723e09b2dcbfdbbeb8da8bd04fa5", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 243, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[C.g()](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L11)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#L10-L15", - "id": "d039169712808e785bf2e53f322c1c6fcd6b93a0a0c17f1a701addd09ed83996", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol.0.6.11.ArrayByReference.json b/tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol.0.6.11.ArrayByReference.json deleted file mode 100644 index c004a12aa..000000000 --- a/tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol.0.6.11.ArrayByReference.json +++ /dev/null @@ -1,1301 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 869, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 836, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 39 - ], - "starting_column": 5, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 578, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[D.f()](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L42-L48) passes array [D.x](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L39)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L42-L48", - "id": "019912974eabe7e8b1e67ca05b342e5106de13fa93fa0adf599a4259c425bd54", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 869, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 836, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 39 - ], - "starting_column": 5, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[D.f()](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L42-L48) passes array [D.x](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L39)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L42-L48", - "id": "1520955a53c36e391abbaf648a91a5a12d432f0f4746b0a8187d0988a6a66846", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 40, - "length": 167, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 17, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L4-L8) passes array [C.x](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L2)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L4-L8", - "id": "79a462bf06ae529ad099f2170100298da30766fcc06884e03436d2b53110d208", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 40, - "length": 167, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 17, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 578, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L4-L8) passes array [C.x](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L2)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L4-L8", - "id": "7f1eda9be40002affd2e8e31d172d3ee3374f37b1106118c79f4add7a133bbd0", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 243, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 578, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[C.g()](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L11)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L10-L15", - "id": "8655e8acd84a6e8152acd2d9730ea0dfdda0723e09b2dcbfdbbeb8da8bd04fa5", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 243, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[C.g()](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L11)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#L10-L15", - "id": "d039169712808e785bf2e53f322c1c6fcd6b93a0a0c17f1a701addd09ed83996", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol.0.7.6.ArrayByReference.json b/tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol.0.7.6.ArrayByReference.json deleted file mode 100644 index 9ed9b8ac8..000000000 --- a/tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol.0.7.6.ArrayByReference.json +++ /dev/null @@ -1,1301 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 869, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 836, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 39 - ], - "starting_column": 5, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 578, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[D.f()](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L42-L48) passes array [D.x](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L39)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L42-L48", - "id": "019912974eabe7e8b1e67ca05b342e5106de13fa93fa0adf599a4259c425bd54", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 869, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 836, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 39 - ], - "starting_column": 5, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 702, - "length": 440, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[D.f()](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L42-L48) passes array [D.x](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L39)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L42-L48", - "id": "1520955a53c36e391abbaf648a91a5a12d432f0f4746b0a8187d0988a6a66846", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 40, - "length": 167, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 17, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L4-L8) passes array [C.x](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L2)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L4-L8", - "id": "79a462bf06ae529ad099f2170100298da30766fcc06884e03436d2b53110d208", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 40, - "length": 167, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 17, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 578, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L4-L8) passes array [C.x](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L2)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L4-L8", - "id": "7f1eda9be40002affd2e8e31d172d3ee3374f37b1106118c79f4add7a133bbd0", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 243, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - } - } - }, - { - "type": "function", - "name": "setByValueAndReturn", - "source_mapping": { - "start": 578, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValueAndReturn(uint256[1])" - } - } - ], - "description": "C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value\n", - "markdown": "[C.g()](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L11)by reference to [C.setByValueAndReturn(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L25-L28)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L10-L15", - "id": "8655e8acd84a6e8152acd2d9730ea0dfdda0723e09b2dcbfdbbeb8da8bd04fa5", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 243, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 213, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "g()" - } - } - } - }, - { - "type": "function", - "name": "setByValue", - "source_mapping": { - "start": 498, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setByValue(uint256[1])" - } - } - ], - "description": "C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value\n", - "markdown": "[C.g()](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L11)by reference to [C.setByValue(uint256[1])](tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L21-L23)which only takes arrays by value\n", - "first_markdown_element": "tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#L10-L15", - "id": "d039169712808e785bf2e53f322c1c6fcd6b93a0a0c17f1a701addd09ed83996", - "check": "array-by-reference", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol.0.4.25.Assembly.json b/tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol.0.4.25.Assembly.json deleted file mode 100644 index 586412476..000000000 --- a/tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol.0.4.25.Assembly.json +++ /dev/null @@ -1,181 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "at", - "source_mapping": { - "start": 119, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GetCode", - "source_mapping": { - "start": 97, - "length": 724, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "at(address)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 191, - "length": 628, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 9, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "at", - "source_mapping": { - "start": 119, - "length": 700, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GetCode", - "source_mapping": { - "start": 97, - "length": 724, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "at(address)" - } - } - } - } - ], - "description": "GetCode.at(address) (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol#6-20) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol#7-20)\n", - "markdown": "[GetCode.at(address)](tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol#L6-L20) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol#L7-L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_contract.sol#L6-L20", - "id": "a5eefe2a5488a11d79ceabd14aa54ce8edc1de512b733d39c25a38909a64bcf6", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol.0.4.25.Assembly.json b/tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol.0.4.25.Assembly.json deleted file mode 100644 index 1e398fdb9..000000000 --- a/tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol.0.4.25.Assembly.json +++ /dev/null @@ -1,464 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "sumPureAsm", - "source_mapping": { - "start": 923, - "length": 754, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 98, - "length": 1581, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumPureAsm(uint256[])" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 1000, - "length": 677, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 9, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sumPureAsm", - "source_mapping": { - "start": 923, - "length": 754, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 98, - "length": 1581, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumPureAsm(uint256[])" - } - } - } - } - ], - "description": "VectorSum.sumPureAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#25-47) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#26-47)\n", - "markdown": "[VectorSum.sumPureAsm(uint256[])](tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#L25-L47) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#L26-L47)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#L25-L47", - "id": "31db8c5aa923499030eeaff5c0eb368570cb2e9e497a982b5325ded49b9ed6b9", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "sumAsm", - "source_mapping": { - "start": 593, - "length": 247, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 98, - "length": 1581, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumAsm(uint256[])" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 720, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21 - ], - "starting_column": 13, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sumAsm", - "source_mapping": { - "start": 593, - "length": 247, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 98, - "length": 1581, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumAsm(uint256[])" - } - } - } - } - ], - "description": "VectorSum.sumAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#16-22) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#18-21)\n", - "markdown": "[VectorSum.sumAsm(uint256[])](tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#L16-L22) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#L18-L21)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.4.25/inline_assembly_library.sol#L16-L22", - "id": "a5b0d4efa6e09d7f5c00cc759efb20a0f423ad31277f4362952371e2e7f03b78", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol.0.5.16.Assembly.json b/tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol.0.5.16.Assembly.json deleted file mode 100644 index 3a129af92..000000000 --- a/tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol.0.5.16.Assembly.json +++ /dev/null @@ -1,180 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "at", - "source_mapping": { - "start": 119, - "length": 707, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GetCode", - "source_mapping": { - "start": 97, - "length": 731, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "at(address)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 198, - "length": 622, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "at", - "source_mapping": { - "start": 119, - "length": 707, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GetCode", - "source_mapping": { - "start": 97, - "length": 731, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "at(address)" - } - } - } - } - ], - "description": "GetCode.at(address) (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol#6-20) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol#7-19)\n", - "markdown": "[GetCode.at(address)](tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol#L6-L20) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol#L7-L19)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_contract.sol#L6-L20", - "id": "7e730dca96d8dd17fdd704eb383af584599385cf12fd7a6d70c64fca8a0c49d5", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol.0.5.16.Assembly.json b/tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol.0.5.16.Assembly.json deleted file mode 100644 index 4c2c748f6..000000000 --- a/tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol.0.5.16.Assembly.json +++ /dev/null @@ -1,462 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "sumAsm", - "source_mapping": { - "start": 599, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 97, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumAsm(uint256[])" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 733, - "length": 104, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sumAsm", - "source_mapping": { - "start": 599, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 97, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumAsm(uint256[])" - } - } - } - } - ], - "description": "VectorSum.sumAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#16-22) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#18-20)\n", - "markdown": "[VectorSum.sumAsm(uint256[])](tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#L16-L22) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#L18-L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#L16-L22", - "id": "aad9895206cb105eedd9a8327006b68c94866521e678fe76a905398370db9c6c", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "sumPureAsm", - "source_mapping": { - "start": 936, - "length": 761, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 97, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumPureAsm(uint256[])" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 1020, - "length": 671, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sumPureAsm", - "source_mapping": { - "start": 936, - "length": 761, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 97, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumPureAsm(uint256[])" - } - } - } - } - ], - "description": "VectorSum.sumPureAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#25-47) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#26-46)\n", - "markdown": "[VectorSum.sumPureAsm(uint256[])](tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#L25-L47) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#L26-L46)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.5.16/inline_assembly_library.sol#L25-L47", - "id": "d7f5f72e9eb7d7421e9b2dee649d13448ca39c59a5c1150e158e6101e14a4c7d", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol.0.6.11.Assembly.json b/tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol.0.6.11.Assembly.json deleted file mode 100644 index fde8557cc..000000000 --- a/tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol.0.6.11.Assembly.json +++ /dev/null @@ -1,180 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "at", - "source_mapping": { - "start": 94, - "length": 707, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GetCode", - "source_mapping": { - "start": 72, - "length": 731, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "at(address)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 173, - "length": 622, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "at", - "source_mapping": { - "start": 94, - "length": 707, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GetCode", - "source_mapping": { - "start": 72, - "length": 731, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "at(address)" - } - } - } - } - ], - "description": "GetCode.at(address) (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol#4-18) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol#5-17)\n", - "markdown": "[GetCode.at(address)](tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol#L4-L18) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol#L5-L17)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_contract.sol#L4-L18", - "id": "9ac1d15ba6758a010743a284c8db880d40b6a09a41e814ec89808c20ae33bd53", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol.0.6.11.Assembly.json b/tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol.0.6.11.Assembly.json deleted file mode 100644 index 8844c8efa..000000000 --- a/tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol.0.6.11.Assembly.json +++ /dev/null @@ -1,462 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "sumAsm", - "source_mapping": { - "start": 574, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 72, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumAsm(uint256[])" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 708, - "length": 104, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sumAsm", - "source_mapping": { - "start": 574, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 72, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumAsm(uint256[])" - } - } - } - } - ], - "description": "VectorSum.sumAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#14-20) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#16-18)\n", - "markdown": "[VectorSum.sumAsm(uint256[])](tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#L14-L20) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#L16-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#L14-L20", - "id": "3a556efa86f5a82c92e78104a1aeba089a5af8401b31e183c798c3db5f8a35c1", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "sumPureAsm", - "source_mapping": { - "start": 911, - "length": 761, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 72, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumPureAsm(uint256[])" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 995, - "length": 671, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sumPureAsm", - "source_mapping": { - "start": 911, - "length": 761, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 72, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumPureAsm(uint256[])" - } - } - } - } - ], - "description": "VectorSum.sumPureAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#23-45) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#24-44)\n", - "markdown": "[VectorSum.sumPureAsm(uint256[])](tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#L23-L45) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#L24-L44)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.6.11/inline_assembly_library.sol#L23-L45", - "id": "8bb9c27f9e5cc1884401e4b4157b915e950ab4d2b7610b0e946ab4dd0bb5ef0b", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol.0.7.6.Assembly.json b/tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol.0.7.6.Assembly.json deleted file mode 100644 index 60cf11f34..000000000 --- a/tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol.0.7.6.Assembly.json +++ /dev/null @@ -1,180 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "at", - "source_mapping": { - "start": 94, - "length": 707, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GetCode", - "source_mapping": { - "start": 72, - "length": 731, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "at(address)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 173, - "length": 622, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "at", - "source_mapping": { - "start": 94, - "length": 707, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GetCode", - "source_mapping": { - "start": 72, - "length": 731, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "at(address)" - } - } - } - } - ], - "description": "GetCode.at(address) (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol#4-18) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol#5-17)\n", - "markdown": "[GetCode.at(address)](tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol#L4-L18) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol#L5-L17)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_contract.sol#L4-L18", - "id": "8572a4fe623eebe88b13623bb1b58a261447fbf761f30bca58f0401703257883", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol.0.7.6.Assembly.json b/tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol.0.7.6.Assembly.json deleted file mode 100644 index 361640626..000000000 --- a/tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol.0.7.6.Assembly.json +++ /dev/null @@ -1,462 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "sumAsm", - "source_mapping": { - "start": 574, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 72, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumAsm(uint256[])" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 708, - "length": 104, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18 - ], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sumAsm", - "source_mapping": { - "start": 574, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 72, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumAsm(uint256[])" - } - } - } - } - ], - "description": "VectorSum.sumAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#14-20) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#16-18)\n", - "markdown": "[VectorSum.sumAsm(uint256[])](tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#L14-L20) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#L16-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#L14-L20", - "id": "01781f60fc7e3b09baa45df51cea8cb01176741056315ec6b32be610b0e4f27f", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "sumPureAsm", - "source_mapping": { - "start": 911, - "length": 761, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 72, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumPureAsm(uint256[])" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 995, - "length": 671, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "sumPureAsm", - "source_mapping": { - "start": 911, - "length": 761, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VectorSum", - "source_mapping": { - "start": 72, - "length": 1602, - "filename_relative": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "sumPureAsm(uint256[])" - } - } - } - } - ], - "description": "VectorSum.sumPureAsm(uint256[]) (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#23-45) uses assembly\n\t- INLINE ASM (tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#24-44)\n", - "markdown": "[VectorSum.sumPureAsm(uint256[])](tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#L23-L45) uses assembly\n\t- [INLINE ASM](tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#L24-L44)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assembly/0.7.6/inline_assembly_library.sol#L23-L45", - "id": "85808e86367fa259711d41c48f23ea18a68773f92124e3aad598acb6d45ac69e", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol.0.4.25.AssertStateChange.json b/tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol.0.4.25.AssertStateChange.json deleted file mode 100644 index 6ae5f7d92..000000000 --- a/tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol.0.4.25.AssertStateChange.json +++ /dev/null @@ -1,556 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 398, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "assert(bool)(bad2_callee())", - "source_mapping": { - "start": 427, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 398, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "A.bad2() (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#19-21) has an assert() call which possibly changes state.\n\t-assert(bool)(bad2_callee()) (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#20)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad2()](tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#L19-L21) has an assert() call which possibly changes state.\n\t-[assert(bool)(bad2_callee())](tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#L20)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#L19-L21", - "id": "85979ffbc3cf8c2e71c54ee1cd498165a330c7e02389732170dee1c14008a72b", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 77, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "assert(bool)((s_a += 1) > 10)", - "source_mapping": { - "start": 106, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 77, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "A.bad0() (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#6-8) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += 1) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#7)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad0()](tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#L6-L8) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += 1) > 10)](tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#L7)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#L6-L8", - "id": "88a3e2b76097a01a39053337640c9105227317e018b08c603bf154883d054d5c", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 186, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - }, - { - "type": "node", - "name": "assert(bool)((s_a += a) > 10)", - "source_mapping": { - "start": 224, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 186, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - } - } - } - ], - "description": "A.bad1(uint256) (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#11-13) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += a) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#12)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad1(uint256)](tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#L11-L13) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += a) > 10)](tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#L12)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.4.25/assert_state_change.sol#L11-L13", - "id": "8c2bfb124ed74f4b532b06c3a88b5d014cf2d19a81ad22b0ca561545965c0e2b", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol.0.5.16.AssertStateChange.json b/tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol.0.5.16.AssertStateChange.json deleted file mode 100644 index 9abeed7f2..000000000 --- a/tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol.0.5.16.AssertStateChange.json +++ /dev/null @@ -1,556 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 186, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - }, - { - "type": "node", - "name": "assert(bool)((s_a += a) > 10)", - "source_mapping": { - "start": 224, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 186, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - } - } - } - ], - "description": "A.bad1(uint256) (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#11-13) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += a) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#12)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad1(uint256)](tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#L11-L13) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += a) > 10)](tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#L12)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#L11-L13", - "id": "06b536c1f6f37d0b7ef3459055c7757375e371d3dfbd6c17012bcc2c7991bfc7", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 398, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "assert(bool)(bad2_callee())", - "source_mapping": { - "start": 427, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 398, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "A.bad2() (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#19-21) has an assert() call which possibly changes state.\n\t-assert(bool)(bad2_callee()) (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#20)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad2()](tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#L19-L21) has an assert() call which possibly changes state.\n\t-[assert(bool)(bad2_callee())](tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#L20)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#L19-L21", - "id": "58c5e6106ba6566aacedc2e05143de4a6b8befba4ef5de931581f5cf09ccbcaf", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 77, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "assert(bool)((s_a += 1) > 10)", - "source_mapping": { - "start": 106, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 77, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "A.bad0() (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#6-8) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += 1) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#7)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad0()](tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#L6-L8) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += 1) > 10)](tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#L7)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.5.16/assert_state_change.sol#L6-L8", - "id": "6b042fd4a2a0d41b27bc01260a09db3c4387ec65ca23d9d9df1230f54f53681a", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol.0.6.11.AssertStateChange.json b/tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol.0.6.11.AssertStateChange.json deleted file mode 100644 index 35fb8b687..000000000 --- a/tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol.0.6.11.AssertStateChange.json +++ /dev/null @@ -1,556 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 77, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "assert(bool)((s_a += 1) > 10)", - "source_mapping": { - "start": 106, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 77, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "A.bad0() (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#6-8) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += 1) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#7)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad0()](tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#L6-L8) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += 1) > 10)](tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#L7)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#L6-L8", - "id": "0855817bbb19b59c76156f29f217db4196244311d133ee0f88b4fe586abc7488", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 186, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - }, - { - "type": "node", - "name": "assert(bool)((s_a += a) > 10)", - "source_mapping": { - "start": 224, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 186, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - } - } - } - ], - "description": "A.bad1(uint256) (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#11-13) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += a) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#12)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad1(uint256)](tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#L11-L13) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += a) > 10)](tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#L12)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#L11-L13", - "id": "579536e4b54c9a38337b1b974bfe04be3e63cd7e749f68fb9b7fa4a97c2b35a7", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 398, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "assert(bool)(bad2_callee())", - "source_mapping": { - "start": 427, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 398, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "A.bad2() (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#19-21) has an assert() call which possibly changes state.\n\t-assert(bool)(bad2_callee()) (tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#20)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad2()](tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#L19-L21) has an assert() call which possibly changes state.\n\t-[assert(bool)(bad2_callee())](tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#L20)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.6.11/assert_state_change.sol#L19-L21", - "id": "a1813bb52d5a82887885c8c90d8fa10c4e80612143752aeaad86a261855ef2e7", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol.0.7.6.AssertStateChange.json b/tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol.0.7.6.AssertStateChange.json deleted file mode 100644 index f42a95cfa..000000000 --- a/tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol.0.7.6.AssertStateChange.json +++ /dev/null @@ -1,556 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 398, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "assert(bool)(bad2_callee())", - "source_mapping": { - "start": 427, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 398, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "A.bad2() (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#19-21) has an assert() call which possibly changes state.\n\t-assert(bool)(bad2_callee()) (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#20)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad2()](tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#L19-L21) has an assert() call which possibly changes state.\n\t-[assert(bool)(bad2_callee())](tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#L20)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#L19-L21", - "id": "007f2bdbef5004ed854ea288a36b2bbcf31c2ecfdc41896a7f978d274bff6fc1", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 186, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - }, - { - "type": "node", - "name": "assert(bool)((s_a += a) > 10)", - "source_mapping": { - "start": 224, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 186, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - } - } - } - ], - "description": "A.bad1(uint256) (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#11-13) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += a) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#12)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad1(uint256)](tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#L11-L13) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += a) > 10)](tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#L12)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#L11-L13", - "id": "139e739308fb37177087443177ea3ca24788c9ad0391de3d8d331046daf8988a", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 77, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "assert(bool)((s_a += 1) > 10)", - "source_mapping": { - "start": 106, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 77, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 759, - "filename_relative": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "A.bad0() (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#6-8) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += 1) > 10) (tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#7)\nConsider using require() or change the invariant to not modify the state.\n", - "markdown": "[A.bad0()](tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#L6-L8) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += 1) > 10)](tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#L7)\nConsider using require() or change the invariant to not modify the state.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/assert-state-change/0.7.6/assert_state_change.sol#L6-L8", - "id": "5ce92f244b7d1f6be8a6098e0abd5c69b15ea8353a42e21be1837a68915ead44", - "check": "assert-state-change", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol.0.4.25.Backdoor.json b/tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol.0.4.25.Backdoor.json deleted file mode 100644 index 2cff131a2..000000000 --- a/tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol.0.4.25.Backdoor.json +++ /dev/null @@ -1,60 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "i_am_a_backdoor", - "source_mapping": { - "start": 18, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 1, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "i_am_a_backdoor()" - } - } - ], - "description": "Backdoor function found in C.i_am_a_backdoor() (tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol#4-6)\n", - "markdown": "Backdoor function found in [C.i_am_a_backdoor()](tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol#L4-L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/backdoor/0.4.25/backdoor.sol#L4-L6", - "id": "8a9008f2f5cd23b34feb0235dcc30ecb8d09a10eff151b522939caead117ef7a", - "check": "backdoor", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol.0.5.16.Backdoor.json b/tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol.0.5.16.Backdoor.json deleted file mode 100644 index cb901fd31..000000000 --- a/tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol.0.5.16.Backdoor.json +++ /dev/null @@ -1,60 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "i_am_a_backdoor", - "source_mapping": { - "start": 18, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 1, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "i_am_a_backdoor()" - } - } - ], - "description": "Backdoor function found in C.i_am_a_backdoor() (tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol#4-6)\n", - "markdown": "Backdoor function found in [C.i_am_a_backdoor()](tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol#L4-L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/backdoor/0.5.16/backdoor.sol#L4-L6", - "id": "8a9008f2f5cd23b34feb0235dcc30ecb8d09a10eff151b522939caead117ef7a", - "check": "backdoor", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol.0.6.11.Backdoor.json b/tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol.0.6.11.Backdoor.json deleted file mode 100644 index 1b2ed3305..000000000 --- a/tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol.0.6.11.Backdoor.json +++ /dev/null @@ -1,60 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "i_am_a_backdoor", - "source_mapping": { - "start": 18, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 1, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "i_am_a_backdoor()" - } - } - ], - "description": "Backdoor function found in C.i_am_a_backdoor() (tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol#4-6)\n", - "markdown": "Backdoor function found in [C.i_am_a_backdoor()](tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol#L4-L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/backdoor/0.6.11/backdoor.sol#L4-L6", - "id": "8a9008f2f5cd23b34feb0235dcc30ecb8d09a10eff151b522939caead117ef7a", - "check": "backdoor", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol.0.7.6.Backdoor.json b/tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol.0.7.6.Backdoor.json deleted file mode 100644 index 83a7eaa78..000000000 --- a/tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol.0.7.6.Backdoor.json +++ /dev/null @@ -1,60 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "i_am_a_backdoor", - "source_mapping": { - "start": 18, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 1, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "i_am_a_backdoor()" - } - } - ], - "description": "Backdoor function found in C.i_am_a_backdoor() (tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol#4-6)\n", - "markdown": "Backdoor function found in [C.i_am_a_backdoor()](tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol#L4-L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/backdoor/0.7.6/backdoor.sol#L4-L6", - "id": "8a9008f2f5cd23b34feb0235dcc30ecb8d09a10eff151b522939caead117ef7a", - "check": "backdoor", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol.0.4.25.BooleanConstantMisuse.json b/tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol.0.4.25.BooleanConstantMisuse.json deleted file mode 100644 index 0eb9f8d92..000000000 --- a/tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol.0.4.25.BooleanConstantMisuse.json +++ /dev/null @@ -1,204 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 162, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 923, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - }, - { - "type": "node", - "name": "(b || true)", - "source_mapping": { - "start": 221, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 162, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 923, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - } - } - } - ], - "description": "MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly:\n\t-(b || true) (tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol#10)\n", - "markdown": "[MyConc.bad1(bool)](tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol#L9-L11) uses a Boolean constant improperly:\n\t-[(b || true)](tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/boolean-cst/0.4.25/boolean-constant-misuse.sol#L9-L11", - "id": "09a51b67337dcc1a44f1b71413dc86887509771b9f6d854a5a5aaef94b590da0", - "check": "boolean-cst", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol.0.5.16.BooleanConstantMisuse.json b/tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol.0.5.16.BooleanConstantMisuse.json deleted file mode 100644 index 686621446..000000000 --- a/tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol.0.5.16.BooleanConstantMisuse.json +++ /dev/null @@ -1,204 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 162, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 923, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - }, - { - "type": "node", - "name": "(b || true)", - "source_mapping": { - "start": 221, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 162, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 923, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - } - } - } - ], - "description": "MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly:\n\t-(b || true) (tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol#10)\n", - "markdown": "[MyConc.bad1(bool)](tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol#L9-L11) uses a Boolean constant improperly:\n\t-[(b || true)](tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/boolean-cst/0.5.16/boolean-constant-misuse.sol#L9-L11", - "id": "c460c0b8dd321a4461e2dcea9085607d80b3a205325797025a5429d0c75cb79b", - "check": "boolean-cst", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol.0.6.11.BooleanConstantMisuse.json b/tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol.0.6.11.BooleanConstantMisuse.json deleted file mode 100644 index 9dc762660..000000000 --- a/tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol.0.6.11.BooleanConstantMisuse.json +++ /dev/null @@ -1,204 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 162, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 923, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - }, - { - "type": "node", - "name": "(b || true)", - "source_mapping": { - "start": 221, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 162, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 923, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - } - } - } - ], - "description": "MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly:\n\t-(b || true) (tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol#10)\n", - "markdown": "[MyConc.bad1(bool)](tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol#L9-L11) uses a Boolean constant improperly:\n\t-[(b || true)](tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/boolean-cst/0.6.11/boolean-constant-misuse.sol#L9-L11", - "id": "fc02b6246c48038bd59be2cbf3717e8445d6ce6b1a9981696bce11e23589f63c", - "check": "boolean-cst", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol.0.7.6.BooleanConstantMisuse.json b/tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol.0.7.6.BooleanConstantMisuse.json deleted file mode 100644 index 347b13f6e..000000000 --- a/tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol.0.7.6.BooleanConstantMisuse.json +++ /dev/null @@ -1,204 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 162, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 923, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - }, - { - "type": "node", - "name": "(b || true)", - "source_mapping": { - "start": 221, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 162, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 923, - "filename_relative": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - } - } - } - ], - "description": "MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly:\n\t-(b || true) (tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol#10)\n", - "markdown": "[MyConc.bad1(bool)](tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol#L9-L11) uses a Boolean constant improperly:\n\t-[(b || true)](tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/boolean-cst/0.7.6/boolean-constant-misuse.sol#L9-L11", - "id": "9e4c23f1bdd358acadcd6b0460f26e62cfae9d0f4570df2c540a65f55e47ada0", - "check": "boolean-cst", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol.0.4.25.BooleanEquality.json b/tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol.0.4.25.BooleanEquality.json deleted file mode 100644 index 300e85634..000000000 --- a/tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol.0.4.25.BooleanEquality.json +++ /dev/null @@ -1,166 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 139, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 578, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - }, - { - "type": "node", - "name": "(b == true)", - "source_mapping": { - "start": 198, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 139, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 578, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - } - } - } - ], - "description": "MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol#7-9) compares to a boolean constant:\n\t-(b == true) (tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol#8)\n", - "markdown": "[MyConc.bad1(bool)](tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol#L7-L9) compares to a boolean constant:\n\t-[(b == true)](tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/boolean-equal/0.4.25/boolean-constant-equality.sol#L7-L9", - "id": "a5db2afbaf09297a0a2f82a2b331ad7897fb9d351c751370fdb21b75432a1e61", - "check": "boolean-equal", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol.0.5.16.BooleanEquality.json b/tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol.0.5.16.BooleanEquality.json deleted file mode 100644 index 6d479dedd..000000000 --- a/tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol.0.5.16.BooleanEquality.json +++ /dev/null @@ -1,166 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 139, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 578, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - }, - { - "type": "node", - "name": "(b == true)", - "source_mapping": { - "start": 198, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 139, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 578, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - } - } - } - ], - "description": "MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol#7-9) compares to a boolean constant:\n\t-(b == true) (tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol#8)\n", - "markdown": "[MyConc.bad1(bool)](tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol#L7-L9) compares to a boolean constant:\n\t-[(b == true)](tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/boolean-equal/0.5.16/boolean-constant-equality.sol#L7-L9", - "id": "deeaa11969ba009e66a9ad06eb8ee15a359b785673d245669f54cbe397b7d1b6", - "check": "boolean-equal", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol.0.6.11.BooleanEquality.json b/tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol.0.6.11.BooleanEquality.json deleted file mode 100644 index c9a808c64..000000000 --- a/tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol.0.6.11.BooleanEquality.json +++ /dev/null @@ -1,166 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 139, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 578, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - }, - { - "type": "node", - "name": "(b == true)", - "source_mapping": { - "start": 198, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 139, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 578, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - } - } - } - ], - "description": "MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol#7-9) compares to a boolean constant:\n\t-(b == true) (tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol#8)\n", - "markdown": "[MyConc.bad1(bool)](tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol#L7-L9) compares to a boolean constant:\n\t-[(b == true)](tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/boolean-equal/0.6.11/boolean-constant-equality.sol#L7-L9", - "id": "71051c6206bde91cead25076a2ea429b95f552f468ca348b481d0af1ac178b34", - "check": "boolean-equal", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol.0.7.6.BooleanEquality.json b/tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol.0.7.6.BooleanEquality.json deleted file mode 100644 index 43ba5ff8b..000000000 --- a/tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol.0.7.6.BooleanEquality.json +++ /dev/null @@ -1,166 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 139, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 578, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - }, - { - "type": "node", - "name": "(b == true)", - "source_mapping": { - "start": 198, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 139, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 578, - "filename_relative": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(bool)" - } - } - } - } - ], - "description": "MyConc.bad1(bool) (tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol#7-9) compares to a boolean constant:\n\t-(b == true) (tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol#8)\n", - "markdown": "[MyConc.bad1(bool)](tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol#L7-L9) compares to a boolean constant:\n\t-[(b == true)](tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/boolean-equal/0.7.6/boolean-constant-equality.sol#L7-L9", - "id": "a5ef55035c29649a345f5fce2b02fd6b0a1e5bf69ef05b6c725247da59487715", - "check": "boolean-equal", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol.0.4.25.MultipleCallsInLoop.json b/tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol.0.4.25.MultipleCallsInLoop.json deleted file mode 100644 index d25176dee..000000000 --- a/tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol.0.4.25.MultipleCallsInLoop.json +++ /dev/null @@ -1,678 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 530, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 327, - "length": 831, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - }, - { - "type": "node", - "name": "destinations[i].transfer(i)", - "source_mapping": { - "start": 621, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 13, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 530, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 327, - "length": 831, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - } - } - } - ], - "description": "CallInLoop.bad() (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#24-28) has external calls inside a loop: destinations[i].transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#26)\n", - "markdown": "[CallInLoop.bad()](tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L24-L28) has external calls inside a loop: [destinations[i].transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L24-L28", - "id": "1197eb6c89b4a380337811e1230958b352d5ad960cc4aca0d2be23ec1ad1d25b", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 671, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 327, - "length": 831, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "destinations[i].transfer(i)", - "source_mapping": { - "start": 872, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 35 - ], - "starting_column": 13, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 671, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 327, - "length": 831, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "CallInLoop.bad2() (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#30-37) has external calls inside a loop: destinations[i].transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#35)\n", - "markdown": "[CallInLoop.bad2()](tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L30-L37) has external calls inside a loop: [destinations[i].transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L35)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L30-L37", - "id": "6d5acd9c0dade132f780c57e2c61ea603daf15bb0ef1615b903c760d14abe073", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1074, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 327, - "length": 831, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal(address,uint256)" - } - }, - { - "type": "node", - "name": "a.transfer(i)", - "source_mapping": { - "start": 1135, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1074, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 327, - "length": 831, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal(address,uint256)" - } - } - } - } - ], - "description": "CallInLoop.bad3_internal(address,uint256) (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#45-47) has external calls inside a loop: a.transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#46)\n", - "markdown": "[CallInLoop.bad3_internal(address,uint256)](tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L45-L47) has external calls inside a loop: [a.transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L46)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L45-L47", - "id": "a922522f13366eaeef7e9ae009527e6436193ee6c1cea040f3dc3021ece8c103", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 173, - "length": 150, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoopBase", - "source_mapping": { - "start": 0, - "length": 325, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - }, - { - "type": "node", - "name": "destinations_base[i].transfer(i)", - "source_mapping": { - "start": 274, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 13, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 173, - "length": 150, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoopBase", - "source_mapping": { - "start": 0, - "length": 325, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - } - } - } - ], - "description": "CallInLoopBase.bad_base() (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: destinations_base[i].transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#11)\n", - "markdown": "[CallInLoopBase.bad_base()](tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L9-L13) has external calls inside a loop: [destinations_base[i].transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.4.25/multiple_calls_in_loop.sol#L9-L13", - "id": "b24075894bde55b95eadde9cb759a84d2378e5191ca36b49daf3efd570906af5", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol.0.5.16.MultipleCallsInLoop.json b/tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol.0.5.16.MultipleCallsInLoop.json deleted file mode 100644 index cba104d4c..000000000 --- a/tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol.0.5.16.MultipleCallsInLoop.json +++ /dev/null @@ -1,678 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1142, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal(address,uint256)" - } - }, - { - "type": "node", - "name": "address(uint160(a)).transfer(i)", - "source_mapping": { - "start": 1203, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1142, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal(address,uint256)" - } - } - } - } - ], - "description": "CallInLoop.bad3_internal(address,uint256) (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#45-47) has external calls inside a loop: address(uint160(a)).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#46)\n", - "markdown": "[CallInLoop.bad3_internal(address,uint256)](tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L45-L47) has external calls inside a loop: [address(uint160(a)).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L46)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L45-L47", - "id": "59ef861c065e12f93ab520961e7f5806731ee2d9d4601a784d96e9c629bfd451", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 562, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - }, - { - "type": "node", - "name": "address(uint160(destinations[i])).transfer(i)", - "source_mapping": { - "start": 653, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 13, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 562, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - } - } - } - ], - "description": "CallInLoop.bad() (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#24-28) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#26)\n", - "markdown": "[CallInLoop.bad()](tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L24-L28) has external calls inside a loop: [address(uint160(destinations[i])).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L24-L28", - "id": "6be8c6293c3db4b794b589ec91a9fd957f589bd30464dadc4f7dcd95db2e8ba4", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 721, - "length": 263, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "address(uint160(destinations[i])).transfer(i)", - "source_mapping": { - "start": 922, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 35 - ], - "starting_column": 13, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 721, - "length": 263, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "CallInLoop.bad2() (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#30-37) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#35)\n", - "markdown": "[CallInLoop.bad2()](tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L30-L37) has external calls inside a loop: [address(uint160(destinations[i])).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L35)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L30-L37", - "id": "95493082ccca79b3a3a5d15594928f164b1e2f66813d69c44dcaf264679fce5e", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 180, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoopBase", - "source_mapping": { - "start": 0, - "length": 350, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - }, - { - "type": "node", - "name": "address(uint160(destinations_base[i])).transfer(i)", - "source_mapping": { - "start": 281, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 13, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 180, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoopBase", - "source_mapping": { - "start": 0, - "length": 350, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - } - } - } - ], - "description": "CallInLoopBase.bad_base() (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: address(uint160(destinations_base[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#11)\n", - "markdown": "[CallInLoopBase.bad_base()](tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L9-L13) has external calls inside a loop: [address(uint160(destinations_base[i])).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.5.16/multiple_calls_in_loop.sol#L9-L13", - "id": "ae7775e429b863310f0e884b47c7b03cbf94e5db6b9dbb7c24d5b49b6748b24b", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol.0.6.11.MultipleCallsInLoop.json b/tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol.0.6.11.MultipleCallsInLoop.json deleted file mode 100644 index f4c58469b..000000000 --- a/tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol.0.6.11.MultipleCallsInLoop.json +++ /dev/null @@ -1,678 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1142, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal(address,uint256)" - } - }, - { - "type": "node", - "name": "address(uint160(a)).transfer(i)", - "source_mapping": { - "start": 1203, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1142, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal(address,uint256)" - } - } - } - } - ], - "description": "CallInLoop.bad3_internal(address,uint256) (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#45-47) has external calls inside a loop: address(uint160(a)).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#46)\n", - "markdown": "[CallInLoop.bad3_internal(address,uint256)](tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L45-L47) has external calls inside a loop: [address(uint160(a)).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L46)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L45-L47", - "id": "1275fac0d6d8334883dd78ed0b1b2e65781ea34bf7febaf226e85d3e5181ee2a", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 180, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoopBase", - "source_mapping": { - "start": 0, - "length": 350, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - }, - { - "type": "node", - "name": "address(uint160(destinations_base[i])).transfer(i)", - "source_mapping": { - "start": 281, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 13, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 180, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoopBase", - "source_mapping": { - "start": 0, - "length": 350, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - } - } - } - ], - "description": "CallInLoopBase.bad_base() (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: address(uint160(destinations_base[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#11)\n", - "markdown": "[CallInLoopBase.bad_base()](tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L9-L13) has external calls inside a loop: [address(uint160(destinations_base[i])).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L9-L13", - "id": "1c841cf5332b7dc52c8ff653431ef284e000bcc14523dd09cbbf3f74dc715cc6", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 562, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - }, - { - "type": "node", - "name": "address(uint160(destinations[i])).transfer(i)", - "source_mapping": { - "start": 653, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 13, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 562, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - } - } - } - ], - "description": "CallInLoop.bad() (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#24-28) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#26)\n", - "markdown": "[CallInLoop.bad()](tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L24-L28) has external calls inside a loop: [address(uint160(destinations[i])).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L24-L28", - "id": "d9a385d84b697d514f78bac230816bfd8f859bbdc1a46cfec44bc2b9f96772c6", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 721, - "length": 263, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "address(uint160(destinations[i])).transfer(i)", - "source_mapping": { - "start": 922, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 35 - ], - "starting_column": 13, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 721, - "length": 263, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "CallInLoop.bad2() (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#30-37) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#35)\n", - "markdown": "[CallInLoop.bad2()](tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L30-L37) has external calls inside a loop: [address(uint160(destinations[i])).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L35)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.6.11/multiple_calls_in_loop.sol#L30-L37", - "id": "ea1a84f07ae33b86a4de95eea2c87a684edaa037e4391a948acab36fc08169f4", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol.0.7.6.MultipleCallsInLoop.json b/tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol.0.7.6.MultipleCallsInLoop.json deleted file mode 100644 index de318ce9f..000000000 --- a/tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol.0.7.6.MultipleCallsInLoop.json +++ /dev/null @@ -1,678 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 562, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - }, - { - "type": "node", - "name": "address(uint160(destinations[i])).transfer(i)", - "source_mapping": { - "start": 653, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 13, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 562, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - } - } - } - ], - "description": "CallInLoop.bad() (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#24-28) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#26)\n", - "markdown": "[CallInLoop.bad()](tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L24-L28) has external calls inside a loop: [address(uint160(destinations[i])).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L24-L28", - "id": "05e47489f317ba821a515f42e75e88afd06d13e4a4e28df3de13e9b08c5c82e6", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1142, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal(address,uint256)" - } - }, - { - "type": "node", - "name": "address(uint160(a)).transfer(i)", - "source_mapping": { - "start": 1203, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1142, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 45, - 46, - 47 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal(address,uint256)" - } - } - } - } - ], - "description": "CallInLoop.bad3_internal(address,uint256) (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#45-47) has external calls inside a loop: address(uint160(a)).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#46)\n", - "markdown": "[CallInLoop.bad3_internal(address,uint256)](tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L45-L47) has external calls inside a loop: [address(uint160(a)).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L46)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L45-L47", - "id": "25f60430b97bcd867b254ba08df9477befadb17e5ba8451fbe8223132246a2f1", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 180, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoopBase", - "source_mapping": { - "start": 0, - "length": 350, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - }, - { - "type": "node", - "name": "address(uint160(destinations_base[i])).transfer(i)", - "source_mapping": { - "start": 281, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 13, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 180, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoopBase", - "source_mapping": { - "start": 0, - "length": 350, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - } - } - } - ], - "description": "CallInLoopBase.bad_base() (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: address(uint160(destinations_base[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#11)\n", - "markdown": "[CallInLoopBase.bad_base()](tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L9-L13) has external calls inside a loop: [address(uint160(destinations_base[i])).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L9-L13", - "id": "c605d70888ef228103bd47badf6f2df4426d02a6389045289a750996776c6e32", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 721, - "length": 263, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "address(uint160(destinations[i])).transfer(i)", - "source_mapping": { - "start": 922, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 35 - ], - "starting_column": 13, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 721, - "length": 263, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CallInLoop", - "source_mapping": { - "start": 352, - "length": 892, - "filename_relative": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "CallInLoop.bad2() (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#30-37) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#35)\n", - "markdown": "[CallInLoop.bad2()](tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L30-L37) has external calls inside a loop: [address(uint160(destinations[i])).transfer(i)](tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L35)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/calls-loop/0.7.6/multiple_calls_in_loop.sol#L30-L37", - "id": "d44cd63abfefcfac88d0bdde0429428c81cde6706d9e890cbe3b6f2dcdd7cb96", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol.0.4.25.CouldBeConstant.json b/tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol.0.4.25.CouldBeConstant.json deleted file mode 100644 index fed1ecaf8..000000000 --- a/tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol.0.4.25.CouldBeConstant.json +++ /dev/null @@ -1,386 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "text2", - "source_mapping": { - "start": 333, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 29, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.text2 (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#14) should be constant \n", - "markdown": "[A.text2](tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L14) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L14", - "id": "2f06e04545cea7e7a8998c65d5419f335bf2579a6ce6a832eac9c87392fd5c1a", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "mySistersAddress", - "source_mapping": { - "start": 496, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 5, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 473, - "length": 271, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "B.mySistersAddress (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#26) should be constant \n", - "markdown": "[B.mySistersAddress](tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L26) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L26", - "id": "3b5bff93954a48a79387e7981e8c45d78edc575a0988a10f1c7f439b9f930539", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "myFriendsAddress", - "source_mapping": { - "start": 132, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 29, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.myFriendsAddress (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#7) should be constant \n", - "markdown": "[A.myFriendsAddress](tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L7) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L7", - "id": "52fd72f6870c4b504d1bcf9fb44249658e2077474d66208a33a47d2668b8db49", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant", - "source_mapping": { - "start": 793, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 5, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 746, - "length": 423, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "MyConc.should_be_constant (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#42) should be constant \n", - "markdown": "[MyConc.should_be_constant](tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L42) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L42", - "id": "8d08797efc8230b480ec669c7e2bf53c3b3d16bc59bf7770934b34fd892934f8", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant_2", - "source_mapping": { - "start": 841, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 5, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 746, - "length": 423, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "MyConc.should_be_constant_2 (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#43) should be constant \n", - "markdown": "[MyConc.should_be_constant_2](tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L43) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L43", - "id": "d08c6d1e331083b42c45c222691dd1e6d880814c66d114971875337ca61ba9c9", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "test", - "source_mapping": { - "start": 237, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 29, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.test (tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#10) should be constant \n", - "markdown": "[A.test](tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L10) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.4.25/const_state_variables.sol#L10", - "id": "e407a1b57b4d25949ef7c4e6d97197605857099a94774a9c7a848d7dd3463668", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol.0.5.16.CouldBeConstant.json b/tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol.0.5.16.CouldBeConstant.json deleted file mode 100644 index f760111fc..000000000 --- a/tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol.0.5.16.CouldBeConstant.json +++ /dev/null @@ -1,454 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant_3", - "source_mapping": { - "start": 880, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 44 - ], - "starting_column": 5, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 746, - "length": 467, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "MyConc.should_be_constant_3 (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#44) should be constant \n", - "markdown": "[MyConc.should_be_constant_3](tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L44) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L44", - "id": "29247b0a9939e854ad51bf3b2f58705156aa8b7e446e646b1832467d362b5b3e", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "text2", - "source_mapping": { - "start": 333, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 29, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.text2 (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#14) should be constant \n", - "markdown": "[A.text2](tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L14) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L14", - "id": "2f06e04545cea7e7a8998c65d5419f335bf2579a6ce6a832eac9c87392fd5c1a", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "mySistersAddress", - "source_mapping": { - "start": 496, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 5, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 473, - "length": 271, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "B.mySistersAddress (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#26) should be constant \n", - "markdown": "[B.mySistersAddress](tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L26) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L26", - "id": "3b5bff93954a48a79387e7981e8c45d78edc575a0988a10f1c7f439b9f930539", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "myFriendsAddress", - "source_mapping": { - "start": 132, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 29, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.myFriendsAddress (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#7) should be constant \n", - "markdown": "[A.myFriendsAddress](tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L7) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L7", - "id": "52fd72f6870c4b504d1bcf9fb44249658e2077474d66208a33a47d2668b8db49", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant", - "source_mapping": { - "start": 793, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 5, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 746, - "length": 467, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "MyConc.should_be_constant (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#42) should be constant \n", - "markdown": "[MyConc.should_be_constant](tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L42) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L42", - "id": "8d08797efc8230b480ec669c7e2bf53c3b3d16bc59bf7770934b34fd892934f8", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant_2", - "source_mapping": { - "start": 841, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 5, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 746, - "length": 467, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "MyConc.should_be_constant_2 (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#43) should be constant \n", - "markdown": "[MyConc.should_be_constant_2](tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L43) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L43", - "id": "d08c6d1e331083b42c45c222691dd1e6d880814c66d114971875337ca61ba9c9", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "test", - "source_mapping": { - "start": 237, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 29, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.test (tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#10) should be constant \n", - "markdown": "[A.test](tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L10) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.5.16/const_state_variables.sol#L10", - "id": "e407a1b57b4d25949ef7c4e6d97197605857099a94774a9c7a848d7dd3463668", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol.0.6.11.CouldBeConstant.json b/tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol.0.6.11.CouldBeConstant.json deleted file mode 100644 index 702bda7b9..000000000 --- a/tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol.0.6.11.CouldBeConstant.json +++ /dev/null @@ -1,457 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "text2", - "source_mapping": { - "start": 305, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 1, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.text2 (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#12) should be constant \n", - "markdown": "[A.text2](tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L12) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L12", - "id": "2f06e04545cea7e7a8998c65d5419f335bf2579a6ce6a832eac9c87392fd5c1a", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant_2", - "source_mapping": { - "start": 811, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 41 - ], - "starting_column": 5, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 539, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_constant_2 (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#41) should be constant \n", - "markdown": "[Bad.should_be_constant_2](tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L41) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L41", - "id": "3a8b682f7960750cd8228d6cd3d0bb5d7d6f9faaf1a044de2fa7069d8e475af2", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "mySistersAddress", - "source_mapping": { - "start": 468, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 445, - "length": 271, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "B.mySistersAddress (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#24) should be constant \n", - "markdown": "[B.mySistersAddress](tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L24) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L24", - "id": "3b5bff93954a48a79387e7981e8c45d78edc575a0988a10f1c7f439b9f930539", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "myFriendsAddress", - "source_mapping": { - "start": 104, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 1, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.myFriendsAddress (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#5) should be constant \n", - "markdown": "[A.myFriendsAddress](tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L5) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L5", - "id": "52fd72f6870c4b504d1bcf9fb44249658e2077474d66208a33a47d2668b8db49", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant", - "source_mapping": { - "start": 763, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 40 - ], - "starting_column": 5, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 539, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_constant (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#40) should be constant \n", - "markdown": "[Bad.should_be_constant](tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L40) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L40", - "id": "87097c03d57b72ad7c15336eb44e5a30054c50f8daff32e08bc4fbd97852961c", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant_3", - "source_mapping": { - "start": 850, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 5, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 539, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_constant_3 (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#42) should be constant \n", - "markdown": "[Bad.should_be_constant_3](tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L42) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L42", - "id": "8e991c1370b1adb10f01f2d7e48f341dee92a98b91b56ccb291d9149d2da97d0", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "test", - "source_mapping": { - "start": 209, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 1, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.test (tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#8) should be constant \n", - "markdown": "[A.test](tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L8) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.6.11/const_state_variables.sol#L8", - "id": "e407a1b57b4d25949ef7c4e6d97197605857099a94774a9c7a848d7dd3463668", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol.0.7.6.CouldBeConstant.json b/tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol.0.7.6.CouldBeConstant.json deleted file mode 100644 index 4b8e88864..000000000 --- a/tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol.0.7.6.CouldBeConstant.json +++ /dev/null @@ -1,454 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "text2", - "source_mapping": { - "start": 305, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 1, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.text2 (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#12) should be constant \n", - "markdown": "[A.text2](tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L12) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L12", - "id": "2f06e04545cea7e7a8998c65d5419f335bf2579a6ce6a832eac9c87392fd5c1a", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant_2", - "source_mapping": { - "start": 811, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 41 - ], - "starting_column": 5, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 531, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_constant_2 (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#41) should be constant \n", - "markdown": "[Bad.should_be_constant_2](tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L41) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L41", - "id": "3a8b682f7960750cd8228d6cd3d0bb5d7d6f9faaf1a044de2fa7069d8e475af2", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "mySistersAddress", - "source_mapping": { - "start": 468, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 445, - "length": 271, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "B.mySistersAddress (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#24) should be constant \n", - "markdown": "[B.mySistersAddress](tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L24) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L24", - "id": "3b5bff93954a48a79387e7981e8c45d78edc575a0988a10f1c7f439b9f930539", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "myFriendsAddress", - "source_mapping": { - "start": 104, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 1, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.myFriendsAddress (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#5) should be constant \n", - "markdown": "[A.myFriendsAddress](tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L5) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L5", - "id": "52fd72f6870c4b504d1bcf9fb44249658e2077474d66208a33a47d2668b8db49", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant", - "source_mapping": { - "start": 763, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 40 - ], - "starting_column": 5, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 531, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_constant (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#40) should be constant \n", - "markdown": "[Bad.should_be_constant](tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L40) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L40", - "id": "87097c03d57b72ad7c15336eb44e5a30054c50f8daff32e08bc4fbd97852961c", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant_3", - "source_mapping": { - "start": 850, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 5, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 531, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_constant_3 (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#42) should be constant \n", - "markdown": "[Bad.should_be_constant_3](tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L42) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L42", - "id": "8e991c1370b1adb10f01f2d7e48f341dee92a98b91b56ccb291d9149d2da97d0", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "test", - "source_mapping": { - "start": 209, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 1, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.test (tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#8) should be constant \n", - "markdown": "[A.test](tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L8) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.7.6/const_state_variables.sol#L8", - "id": "e407a1b57b4d25949ef7c4e6d97197605857099a94774a9c7a848d7dd3463668", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol.0.8.0.CouldBeConstant.json b/tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol.0.8.0.CouldBeConstant.json deleted file mode 100644 index 6cc26123a..000000000 --- a/tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol.0.8.0.CouldBeConstant.json +++ /dev/null @@ -1,454 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "text2", - "source_mapping": { - "start": 305, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 1, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.text2 (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#12) should be constant \n", - "markdown": "[A.text2](tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L12) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L12", - "id": "2f06e04545cea7e7a8998c65d5419f335bf2579a6ce6a832eac9c87392fd5c1a", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant_2", - "source_mapping": { - "start": 811, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 41 - ], - "starting_column": 5, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 493, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_constant_2 (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#41) should be constant \n", - "markdown": "[Bad.should_be_constant_2](tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L41) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L41", - "id": "3a8b682f7960750cd8228d6cd3d0bb5d7d6f9faaf1a044de2fa7069d8e475af2", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "mySistersAddress", - "source_mapping": { - "start": 468, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 445, - "length": 271, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "B.mySistersAddress (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#24) should be constant \n", - "markdown": "[B.mySistersAddress](tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L24) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L24", - "id": "3b5bff93954a48a79387e7981e8c45d78edc575a0988a10f1c7f439b9f930539", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "myFriendsAddress", - "source_mapping": { - "start": 104, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 1, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.myFriendsAddress (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#5) should be constant \n", - "markdown": "[A.myFriendsAddress](tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L5) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L5", - "id": "52fd72f6870c4b504d1bcf9fb44249658e2077474d66208a33a47d2668b8db49", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant", - "source_mapping": { - "start": 763, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 40 - ], - "starting_column": 5, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 493, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_constant (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#40) should be constant \n", - "markdown": "[Bad.should_be_constant](tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L40) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L40", - "id": "87097c03d57b72ad7c15336eb44e5a30054c50f8daff32e08bc4fbd97852961c", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_constant_3", - "source_mapping": { - "start": 850, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 5, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 493, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_constant_3 (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#42) should be constant \n", - "markdown": "[Bad.should_be_constant_3](tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L42) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L42", - "id": "8e991c1370b1adb10f01f2d7e48f341dee92a98b91b56ccb291d9149d2da97d0", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "test", - "source_mapping": { - "start": 209, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 1, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "A.test (tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#8) should be constant \n", - "markdown": "[A.test](tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L8) should be constant \n", - "first_markdown_element": "tests/e2e/detectors/test_data/constable-states/0.8.0/const_state_variables.sol#L8", - "id": "e407a1b57b4d25949ef7c4e6d97197605857099a94774a9c7a848d7dd3463668", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol.0.4.25.ConstantFunctionsAsm.json b/tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol.0.4.25.ConstantFunctionsAsm.json deleted file mode 100644 index 92f3c6d28..000000000 --- a/tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol.0.4.25.ConstantFunctionsAsm.json +++ /dev/null @@ -1,81 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "test_assembly_bug", - "source_mapping": { - "start": 324, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Constant", - "source_mapping": { - "start": 0, - "length": 392, - "filename_relative": "tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test_assembly_bug()" - } - } - ], - "description": "Constant.test_assembly_bug() (tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol#22-24) is declared view but contains assembly code\n", - "markdown": "[Constant.test_assembly_bug()](tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol#L22-L24) is declared view but contains assembly code\n", - "first_markdown_element": "tests/e2e/detectors/test_data/constant-function-asm/0.4.25/constant.sol#L22-L24", - "id": "1f892cae08b89096bdc4d6ecdf55a3adc4b4314390e054fe2547d9c8e9f76e23", - "additional_fields": { - "contains_assembly": true - }, - "check": "constant-function-asm", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constant-function-asm/0.5.16/constant.sol.0.5.16.ConstantFunctionsAsm.json b/tests/e2e/detectors/test_data/constant-function-asm/0.5.16/constant.sol.0.5.16.ConstantFunctionsAsm.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/constant-function-asm/0.5.16/constant.sol.0.5.16.ConstantFunctionsAsm.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constant-function-asm/0.6.11/constant.sol.0.6.11.ConstantFunctionsAsm.json b/tests/e2e/detectors/test_data/constant-function-asm/0.6.11/constant.sol.0.6.11.ConstantFunctionsAsm.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/constant-function-asm/0.6.11/constant.sol.0.6.11.ConstantFunctionsAsm.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constant-function-asm/0.7.6/constant.sol.0.7.6.ConstantFunctionsAsm.json b/tests/e2e/detectors/test_data/constant-function-asm/0.7.6/constant.sol.0.7.6.ConstantFunctionsAsm.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/constant-function-asm/0.7.6/constant.sol.0.7.6.ConstantFunctionsAsm.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol.0.4.25.ConstantFunctionsState.json b/tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol.0.4.25.ConstantFunctionsState.json deleted file mode 100644 index 60d55ca83..000000000 --- a/tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol.0.4.25.ConstantFunctionsState.json +++ /dev/null @@ -1,278 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "test_constant_bug", - "source_mapping": { - "start": 113, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Constant", - "source_mapping": { - "start": 0, - "length": 392, - "filename_relative": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test_constant_bug()" - } - }, - { - "type": "variable", - "name": "a", - "source_mapping": { - "start": 28, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 5, - "ending_column": 11 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Constant", - "source_mapping": { - "start": 0, - "length": 392, - "filename_relative": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Constant.test_constant_bug() (tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#9-11) is declared view but changes state variables:\n\t- Constant.a (tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#3)\n", - "markdown": "[Constant.test_constant_bug()](tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#L9-L11) is declared view but changes state variables:\n\t- [Constant.a](tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#L9-L11", - "id": "145e2d34dfc5b932c8d67d480c0eaec9baa8c728e2a310529572c0c4a5c6046a", - "additional_fields": { - "contains_assembly": false - }, - "check": "constant-function-state", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "test_view_bug", - "source_mapping": { - "start": 45, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Constant", - "source_mapping": { - "start": 0, - "length": 392, - "filename_relative": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test_view_bug()" - } - }, - { - "type": "variable", - "name": "a", - "source_mapping": { - "start": 28, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 5, - "ending_column": 11 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Constant", - "source_mapping": { - "start": 0, - "length": 392, - "filename_relative": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Constant.test_view_bug() (tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#5-7) is declared view but changes state variables:\n\t- Constant.a (tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#3)\n", - "markdown": "[Constant.test_view_bug()](tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#L5-L7) is declared view but changes state variables:\n\t- [Constant.a](tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/constant-function-state/0.4.25/constant.sol#L5-L7", - "id": "4dee61d8835d20c6f1f7c195d8bd1e9de5dbcc096396a5b8db391136f9f5fdf1", - "additional_fields": { - "contains_assembly": false - }, - "check": "constant-function-state", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constant-function-state/0.5.16/constant.sol.0.5.16.ConstantFunctionsState.json b/tests/e2e/detectors/test_data/constant-function-state/0.5.16/constant.sol.0.5.16.ConstantFunctionsState.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/constant-function-state/0.5.16/constant.sol.0.5.16.ConstantFunctionsState.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constant-function-state/0.6.11/constant.sol.0.6.11.ConstantFunctionsState.json b/tests/e2e/detectors/test_data/constant-function-state/0.6.11/constant.sol.0.6.11.ConstantFunctionsState.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/constant-function-state/0.6.11/constant.sol.0.6.11.ConstantFunctionsState.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/constant-function-state/0.7.6/constant.sol.0.7.6.ConstantFunctionsState.json b/tests/e2e/detectors/test_data/constant-function-state/0.7.6/constant.sol.0.7.6.ConstantFunctionsState.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/constant-function-state/0.7.6/constant.sol.0.7.6.ConstantFunctionsState.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol.0.4.25.ArrayLengthAssignment.json b/tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol.0.4.25.ArrayLengthAssignment.json deleted file mode 100644 index 1937a8561..000000000 --- a/tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol.0.4.25.ArrayLengthAssignment.json +++ /dev/null @@ -1,595 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "b.subStruct.x.length = param + 1", - "source_mapping": { - "start": 964, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 41 - ], - "starting_column": 9, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 406, - "length": 647, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f(uint256,uint256)" - } - } - } - } - ], - "description": "ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- b.subStruct.x.length = param + 1 (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#41)\n", - "markdown": "[ArrayLengthAssignment](tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [b.subStruct.x.length = param + 1](tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#L41)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46", - "id": "44bb04e6400492458571a12394273c37a5c0083181ea31f644d895c0ce7eca83", - "check": "controlled-array-length", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "a.x.length = param", - "source_mapping": { - "start": 818, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 36 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 406, - "length": 647, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f(uint256,uint256)" - } - } - } - } - ], - "description": "ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- a.x.length = param (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#36)\n", - "markdown": "[ArrayLengthAssignment](tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [a.x.length = param](tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#L36)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46", - "id": "88eeaf5d76f62d05e6350ef5e6623c947f7225d240fbf6fb77e73e6d0fcfbfe4", - "check": "controlled-array-length", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "arr.length = param", - "source_mapping": { - "start": 527, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 13, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 406, - "length": 647, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f(uint256,uint256)" - } - } - } - } - ], - "description": "ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- arr.length = param (tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#26)\n", - "markdown": "[ArrayLengthAssignment](tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [arr.length = param](tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46", - "id": "9c110476c2adc3d4357e5d5b4c072caf4d32b84e7dfa1649a111c4a16980a10a", - "check": "controlled-array-length", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol.0.5.16.ArrayLengthAssignment.json b/tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol.0.5.16.ArrayLengthAssignment.json deleted file mode 100644 index e038f3ee0..000000000 --- a/tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol.0.5.16.ArrayLengthAssignment.json +++ /dev/null @@ -1,595 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "b.subStruct.x.length = param + 1", - "source_mapping": { - "start": 964, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 41 - ], - "starting_column": 9, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 406, - "length": 647, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f(uint256,uint256)" - } - } - } - } - ], - "description": "ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- b.subStruct.x.length = param + 1 (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#41)\n", - "markdown": "[ArrayLengthAssignment](tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [b.subStruct.x.length = param + 1](tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#L41)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46", - "id": "2ea862d7feccb7b474adb7b90db7f3f80358ea2633da296801c126fff1494499", - "check": "controlled-array-length", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "a.x.length = param", - "source_mapping": { - "start": 818, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 36 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 406, - "length": 647, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f(uint256,uint256)" - } - } - } - } - ], - "description": "ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- a.x.length = param (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#36)\n", - "markdown": "[ArrayLengthAssignment](tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [a.x.length = param](tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#L36)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46", - "id": "3ec83c3dd1c28c95b196590b7366b8c41d39691efa57d6e6353722625790ca2a", - "check": "controlled-array-length", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "arr.length = param", - "source_mapping": { - "start": 527, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 13, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 406, - "length": 647, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ArrayLengthAssignment", - "source_mapping": { - "start": 0, - "length": 1055, - "filename_relative": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f(uint256,uint256)" - } - } - } - } - ], - "description": "ArrayLengthAssignment (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- arr.length = param (tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#26)\n", - "markdown": "[ArrayLengthAssignment](tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [arr.length = param](tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46", - "id": "d47bf9358fd65537009e786d169e7d955c5ac5a0af6fa98a712e450aec9519c2", - "check": "controlled-array-length", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol.0.4.25.ControlledDelegateCall.json b/tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol.0.4.25.ControlledDelegateCall.json deleted file mode 100644 index 362afc13b..000000000 --- a/tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol.0.4.25.ControlledDelegateCall.json +++ /dev/null @@ -1,318 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad_delegate_call2", - "source_mapping": { - "start": 337, - "length": 118, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call2(bytes)" - } - }, - { - "type": "node", - "name": "addr_bad.delegatecall(abi.encode(func_id,data))", - "source_mapping": { - "start": 400, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 9, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_delegate_call2", - "source_mapping": { - "start": 337, - "length": 118, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call2(bytes)" - } - } - } - } - ], - "description": "C.bad_delegate_call2(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(abi.encode(func_id,data)) (tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#19)\n", - "markdown": "[C.bad_delegate_call2(bytes)](tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L18-L20) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(abi.encode(func_id,data))](tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L19)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L18-L20", - "id": "3697b4818f32b2f323e0193ab5d1395358842f1acd9aa6d9a7115adc432d2218", - "check": "controlled-delegatecall", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad_delegate_call", - "source_mapping": { - "start": 101, - "length": 134, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call(bytes)" - } - }, - { - "type": "node", - "name": "addr_bad.delegatecall(data)", - "source_mapping": { - "start": 201, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_delegate_call", - "source_mapping": { - "start": 101, - "length": 134, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call(bytes)" - } - } - } - } - ], - "description": "C.bad_delegate_call(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(data) (tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#10)\n", - "markdown": "[C.bad_delegate_call(bytes)](tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L8-L11) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(data)](tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L8-L11", - "id": "b617d62fff5914c10899af7ded0495ef5029a952eaf0fd28694a639c556c6532", - "check": "controlled-delegatecall", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol.0.5.16.ControlledDelegateCall.json b/tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol.0.5.16.ControlledDelegateCall.json deleted file mode 100644 index 7d31e4a32..000000000 --- a/tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol.0.5.16.ControlledDelegateCall.json +++ /dev/null @@ -1,318 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad_delegate_call2", - "source_mapping": { - "start": 337, - "length": 118, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call2(bytes)" - } - }, - { - "type": "node", - "name": "addr_bad.delegatecall(abi.encode(func_id,data))", - "source_mapping": { - "start": 400, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 9, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_delegate_call2", - "source_mapping": { - "start": 337, - "length": 118, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call2(bytes)" - } - } - } - } - ], - "description": "C.bad_delegate_call2(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(abi.encode(func_id,data)) (tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#19)\n", - "markdown": "[C.bad_delegate_call2(bytes)](tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L18-L20) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(abi.encode(func_id,data))](tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L19)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L18-L20", - "id": "71847bef70b5fc4fbfb7cf94bdbaf96464d6ca55a2e9ac618ee8af77902eb7f6", - "check": "controlled-delegatecall", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad_delegate_call", - "source_mapping": { - "start": 101, - "length": 134, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call(bytes)" - } - }, - { - "type": "node", - "name": "addr_bad.delegatecall(data)", - "source_mapping": { - "start": 201, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_delegate_call", - "source_mapping": { - "start": 101, - "length": 134, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call(bytes)" - } - } - } - } - ], - "description": "C.bad_delegate_call(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(data) (tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#10)\n", - "markdown": "[C.bad_delegate_call(bytes)](tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L8-L11) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(data)](tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L8-L11", - "id": "d1e5184cc93dcb07350d84ed12a87623ac434ddcaf33404d7cfb6e0a5347877f", - "check": "controlled-delegatecall", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol.0.6.11.ControlledDelegateCall.json b/tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol.0.6.11.ControlledDelegateCall.json deleted file mode 100644 index 7325d9e53..000000000 --- a/tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol.0.6.11.ControlledDelegateCall.json +++ /dev/null @@ -1,318 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad_delegate_call2", - "source_mapping": { - "start": 337, - "length": 118, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call2(bytes)" - } - }, - { - "type": "node", - "name": "addr_bad.delegatecall(abi.encode(func_id,data))", - "source_mapping": { - "start": 400, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 9, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_delegate_call2", - "source_mapping": { - "start": 337, - "length": 118, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call2(bytes)" - } - } - } - } - ], - "description": "C.bad_delegate_call2(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(abi.encode(func_id,data)) (tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#19)\n", - "markdown": "[C.bad_delegate_call2(bytes)](tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L18-L20) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(abi.encode(func_id,data))](tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L19)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L18-L20", - "id": "df6abc237722d57d7f972379f03f529a1f16bc8fb448c18e72cd5a7a5566ace8", - "check": "controlled-delegatecall", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad_delegate_call", - "source_mapping": { - "start": 101, - "length": 134, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call(bytes)" - } - }, - { - "type": "node", - "name": "addr_bad.delegatecall(data)", - "source_mapping": { - "start": 201, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_delegate_call", - "source_mapping": { - "start": 101, - "length": 134, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call(bytes)" - } - } - } - } - ], - "description": "C.bad_delegate_call(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(data) (tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#10)\n", - "markdown": "[C.bad_delegate_call(bytes)](tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L8-L11) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(data)](tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L8-L11", - "id": "f995ba96b9af5b9dc54b0fd20a5f09de00b4eafcf39004df3c017c147e659d69", - "check": "controlled-delegatecall", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol.0.7.6.ControlledDelegateCall.json b/tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol.0.7.6.ControlledDelegateCall.json deleted file mode 100644 index 5ed46e0f8..000000000 --- a/tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol.0.7.6.ControlledDelegateCall.json +++ /dev/null @@ -1,318 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad_delegate_call2", - "source_mapping": { - "start": 337, - "length": 118, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call2(bytes)" - } - }, - { - "type": "node", - "name": "addr_bad.delegatecall(abi.encode(func_id,data))", - "source_mapping": { - "start": 400, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 9, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_delegate_call2", - "source_mapping": { - "start": 337, - "length": 118, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call2(bytes)" - } - } - } - } - ], - "description": "C.bad_delegate_call2(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(abi.encode(func_id,data)) (tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#19)\n", - "markdown": "[C.bad_delegate_call2(bytes)](tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L18-L20) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(abi.encode(func_id,data))](tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L19)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L18-L20", - "id": "c8768eb975167e98d2def963b7ccc58753b5636e215fcd3628f922e9862e92be", - "check": "controlled-delegatecall", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad_delegate_call", - "source_mapping": { - "start": 101, - "length": 134, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call(bytes)" - } - }, - { - "type": "node", - "name": "addr_bad.delegatecall(data)", - "source_mapping": { - "start": 201, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_delegate_call", - "source_mapping": { - "start": 101, - "length": 134, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 585, - "filename_relative": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_delegate_call(bytes)" - } - } - } - } - ], - "description": "C.bad_delegate_call(bytes) (tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(data) (tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#10)\n", - "markdown": "[C.bad_delegate_call(bytes)](tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L8-L11) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(data)](tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L8-L11", - "id": "e53105cd8d6d703dfe261317fa5e1d94a7cc5cb513b57a258420dc1adde928c4", - "check": "controlled-delegatecall", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol.0.4.25.CostlyOperationsInLoop.json b/tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol.0.4.25.CostlyOperationsInLoop.json deleted file mode 100644 index 31ce64c79..000000000 --- a/tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol.0.4.25.CostlyOperationsInLoop.json +++ /dev/null @@ -1,780 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 102, - "length": 389, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoopBase", - "source_mapping": { - "start": 0, - "length": 494, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - }, - { - "type": "node", - "name": "state_variable_base ++", - "source_mapping": { - "start": 271, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 7, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 102, - "length": 389, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoopBase", - "source_mapping": { - "start": 0, - "length": 494, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - } - } - } - ], - "description": "CostlyOperationsInLoopBase.bad_base() (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#5-9) has costly operations inside a loop:\n\t- state_variable_base ++ (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#7)\n", - "markdown": "[CostlyOperationsInLoopBase.bad_base()](tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L5-L9) has costly operations inside a loop:\n\t- [state_variable_base ++](tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L5-L9", - "id": "682092df85849634793ee896cd88d83ac2564469f298c20f7f0c6da45d4d49f9", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1855, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 1894, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1855, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad3_internal() (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#41-43) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#42)\n", - "markdown": "[CostlyOperationsInLoop.bad3_internal()](tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L41-L43) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L42)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L41-L43", - "id": "68476a702cb89df131f596097e8c896fd99d83f88916077e6992866632e33ae8", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 1131, - "length": 343, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 1363, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 7, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 1131, - "length": 343, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad2() (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#26-33) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#31)\n", - "markdown": "[CostlyOperationsInLoop.bad2()](tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L26-L33) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L31)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L26-L33", - "id": "c2062080a3b845bae3725cc508857ae8f6f0bf8053081dda37ec642613692d5f", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 754, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 912, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 7, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 754, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad() (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#20-24) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#22)\n", - "markdown": "[CostlyOperationsInLoop.bad()](tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L20-L24) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L20-L24", - "id": "e99bef3af22b3031c130f4f4e4ef4c669971ca94c7cbe7bfe001c34ed7fdae32", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol.0.5.16.CostlyOperationsInLoop.json b/tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol.0.5.16.CostlyOperationsInLoop.json deleted file mode 100644 index d3aa09a68..000000000 --- a/tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol.0.5.16.CostlyOperationsInLoop.json +++ /dev/null @@ -1,780 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 102, - "length": 389, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoopBase", - "source_mapping": { - "start": 0, - "length": 494, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - }, - { - "type": "node", - "name": "state_variable_base ++", - "source_mapping": { - "start": 271, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 7, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 102, - "length": 389, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoopBase", - "source_mapping": { - "start": 0, - "length": 494, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - } - } - } - ], - "description": "CostlyOperationsInLoopBase.bad_base() (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#5-9) has costly operations inside a loop:\n\t- state_variable_base ++ (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#7)\n", - "markdown": "[CostlyOperationsInLoopBase.bad_base()](tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L5-L9) has costly operations inside a loop:\n\t- [state_variable_base ++](tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L5-L9", - "id": "66117c82ffb5c56591c676ef6f04a88358f99e307fddd1c6a6a427458ac3086e", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 1131, - "length": 343, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 1363, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 7, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 1131, - "length": 343, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad2() (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#26-33) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#31)\n", - "markdown": "[CostlyOperationsInLoop.bad2()](tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L26-L33) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L31)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L26-L33", - "id": "aae62985e3789b65bf370fb554018244b5b2e724b243f83447ed214fff715b3d", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1855, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 1894, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1855, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad3_internal() (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#41-43) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#42)\n", - "markdown": "[CostlyOperationsInLoop.bad3_internal()](tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L41-L43) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L42)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L41-L43", - "id": "ead6abba24ab0c905968b6355e45b67e7af9aafcca9b8bf35db39caaff27cd20", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 754, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 912, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 7, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 754, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad() (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#20-24) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#22)\n", - "markdown": "[CostlyOperationsInLoop.bad()](tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L20-L24) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L20-L24", - "id": "fe584345def19a4dd4b80f3733e1b512baff0db924c65966422c3abdeb08fe78", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol.0.6.11.CostlyOperationsInLoop.json b/tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol.0.6.11.CostlyOperationsInLoop.json deleted file mode 100644 index a86e7f879..000000000 --- a/tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol.0.6.11.CostlyOperationsInLoop.json +++ /dev/null @@ -1,780 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 754, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 912, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 7, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 754, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad() (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#20-24) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#22)\n", - "markdown": "[CostlyOperationsInLoop.bad()](tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L20-L24) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L20-L24", - "id": "27325f48eb30596a899c7c4d2d597cc8632225de694afb44f1a04c21fb556e6b", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 1131, - "length": 343, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 1363, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 7, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 1131, - "length": 343, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad2() (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#26-33) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#31)\n", - "markdown": "[CostlyOperationsInLoop.bad2()](tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L26-L33) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L31)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L26-L33", - "id": "396d71671ee31a8296212d18098a3a49185f5c6304b7210c6c1710d373867bc9", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1855, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 1894, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1855, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad3_internal() (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#41-43) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#42)\n", - "markdown": "[CostlyOperationsInLoop.bad3_internal()](tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L41-L43) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L42)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L41-L43", - "id": "47695c707cb0a40551bc13d81e7d29fe4f28b22601772d6c0171ae55d7b3ff04", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 102, - "length": 389, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoopBase", - "source_mapping": { - "start": 0, - "length": 494, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - }, - { - "type": "node", - "name": "state_variable_base ++", - "source_mapping": { - "start": 271, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 7, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 102, - "length": 389, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoopBase", - "source_mapping": { - "start": 0, - "length": 494, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - } - } - } - ], - "description": "CostlyOperationsInLoopBase.bad_base() (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#5-9) has costly operations inside a loop:\n\t- state_variable_base ++ (tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#7)\n", - "markdown": "[CostlyOperationsInLoopBase.bad_base()](tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L5-L9) has costly operations inside a loop:\n\t- [state_variable_base ++](tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L5-L9", - "id": "5ec78c14e179002e40fd9511c749aa5ca38809c7b64160f88b11f70a7ef4f61f", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol.0.7.6.CostlyOperationsInLoop.json b/tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol.0.7.6.CostlyOperationsInLoop.json deleted file mode 100644 index 7bb08cbb8..000000000 --- a/tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol.0.7.6.CostlyOperationsInLoop.json +++ /dev/null @@ -1,780 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1855, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 1894, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_internal", - "source_mapping": { - "start": 1855, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_internal()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad3_internal() (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#41-43) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#42)\n", - "markdown": "[CostlyOperationsInLoop.bad3_internal()](tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L41-L43) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L42)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L41-L43", - "id": "0a74da2f3ac1efea52b795c82e6c5cc0cda69591fce40359b61dc9eba6b1be84", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 102, - "length": 389, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoopBase", - "source_mapping": { - "start": 0, - "length": 494, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - }, - { - "type": "node", - "name": "state_variable_base ++", - "source_mapping": { - "start": 271, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 7, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad_base", - "source_mapping": { - "start": 102, - "length": 389, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoopBase", - "source_mapping": { - "start": 0, - "length": 494, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad_base()" - } - } - } - } - ], - "description": "CostlyOperationsInLoopBase.bad_base() (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#5-9) has costly operations inside a loop:\n\t- state_variable_base ++ (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#7)\n", - "markdown": "[CostlyOperationsInLoopBase.bad_base()](tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L5-L9) has costly operations inside a loop:\n\t- [state_variable_base ++](tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L5-L9", - "id": "0bdf1f5aac98091f9f48992b477699d9f08b770bd2598c66a0f4ded1154078f0", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 1131, - "length": 343, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 1363, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 7, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 1131, - "length": 343, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad2() (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#26-33) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#31)\n", - "markdown": "[CostlyOperationsInLoop.bad2()](tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L26-L33) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L31)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L26-L33", - "id": "63e17db491a0aee4534c9a79a79cde901cab73d7f99b432bf235f6824d2062f9", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 754, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - }, - { - "type": "node", - "name": "state_variable ++", - "source_mapping": { - "start": 912, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 7, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 754, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "CostlyOperationsInLoop", - "source_mapping": { - "start": 496, - "length": 1899, - "filename_relative": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - } - } - } - ], - "description": "CostlyOperationsInLoop.bad() (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#20-24) has costly operations inside a loop:\n\t- state_variable ++ (tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#22)\n", - "markdown": "[CostlyOperationsInLoop.bad()](tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L20-L24) has costly operations inside a loop:\n\t- [state_variable ++](tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L20-L24", - "id": "c360d08ee1ae166d2088f069079fbb267ff31dcc5a2b3502193dee7cb27ad75a", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol.0.8.16.CyclomaticComplexity.json b/tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol.0.8.16.CyclomaticComplexity.json deleted file mode 100644 index 472f9a0ba..000000000 --- a/tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol.0.8.16.CyclomaticComplexity.json +++ /dev/null @@ -1,96 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "highCC", - "source_mapping": { - "start": 244, - "length": 536, - "filename_relative": "tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "HighCyclomaticComplexity", - "source_mapping": { - "start": 25, - "length": 757, - "filename_relative": "tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "highCC()" - } - } - ], - "description": "HighCyclomaticComplexity.highCC() (tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol#17-31) has a high cyclomatic complexity (12).\n", - "markdown": "[HighCyclomaticComplexity.highCC()](tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol#L17-L31) has a high cyclomatic complexity (12).\n", - "first_markdown_element": "tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/HighCyclomaticComplexity.sol#L17-L31", - "id": "405b9e7f5697539c75171d728f0a10b6ebb7fe08441c445b0e63c33982c98e2d", - "check": "cyclomatic-complexity", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/LowCyclomaticComplexity.sol.0.8.16.CyclomaticComplexity.json b/tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/LowCyclomaticComplexity.sol.0.8.16.CyclomaticComplexity.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/cyclomatic-complexity/0.8.16/LowCyclomaticComplexity.sol.0.8.16.CyclomaticComplexity.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol.0.8.0.DeadCode.json b/tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol.0.8.0.DeadCode.json deleted file mode 100644 index 32481128a..000000000 --- a/tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol.0.8.0.DeadCode.json +++ /dev/null @@ -1,167 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "unused_but_shadowed", - "source_mapping": { - "start": 319, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test4", - "source_mapping": { - "start": 290, - "length": 87, - "filename_relative": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "unused_but_shadowed()" - } - } - ], - "description": "Test4.unused_but_shadowed() (tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#26-28) is never used and should be removed\n", - "markdown": "[Test4.unused_but_shadowed()](tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#L26-L28) is never used and should be removed\n", - "first_markdown_element": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#L26-L28", - "id": "74ea8421cf7fa9e04d243014b61f3eee7a9c7648df98316c3881dd4f1f2ab3f7", - "check": "dead-code", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "unused", - "source_mapping": { - "start": 19, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "unused()" - } - } - ], - "description": "Test.unused() (tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#2-4) is never used and should be removed\n", - "markdown": "[Test.unused()](tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#L2-L4) is never used and should be removed\n", - "first_markdown_element": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#L2-L4", - "id": "a7c13823116566bbbbb68e8a7efa78fe64785fcb8582069373eda7f27c523cb3", - "check": "dead-code", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "unused_but_shadowed", - "source_mapping": { - "start": 79, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 58, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "unused_but_shadowed()" - } - } - ], - "description": "Test2.unused_but_shadowed() (tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#10-12) is never used and should be removed\n", - "markdown": "[Test2.unused_but_shadowed()](tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#L10-L12) is never used and should be removed\n", - "first_markdown_element": "tests/e2e/detectors/test_data/dead-code/0.8.0/dead-code.sol#L10-L12", - "id": "aaba496684b73955e90b555de174e1cd03f0fee337849c4d58c10ef76ff93582", - "check": "dead-code", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol.0.4.25.DelegatecallInLoop.json b/tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol.0.4.25.DelegatecallInLoop.json deleted file mode 100644 index 4fae8a432..000000000 --- a/tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol.0.4.25.DelegatecallInLoop.json +++ /dev/null @@ -1,542 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 188, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - } - } - } - ], - "description": "C.bad(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#5-9) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#7)\n", - "markdown": "[C.bad(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#L5-L9) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#L5-L9", - "id": "6d9bc0a5e7904d4ff88cea0a8f899ad4952da844175aa76970d40189e6c0ecb5", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 738, - "length": 312, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 931, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 17, - "ending_column": 105 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 738, - "length": 312, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - } - } - } - ], - "description": "C.bad3(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#25-31) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#28)\n", - "markdown": "[C.bad3(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#L25-L31) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#L28)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#L25-L31", - "id": "ac822467d10c9cfad0d6e339fb53c91b1dccd27df5697b83904751090c8c3386", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 496, - "length": 236, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 627, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 496, - "length": 236, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address[])" - } - } - } - } - ], - "description": "C.bad2_internal(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#19-23) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#21)\n", - "markdown": "[C.bad2_internal(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#L19-L23) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#L21)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.4.25/delegatecall_loop.sol#L19-L23", - "id": "f648fec7fba6e2f8a7e8d9d1e5d7106c6f433c64a7c95b236571a032eae5c6cd", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol.0.5.16.DelegatecallInLoop.json b/tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol.0.5.16.DelegatecallInLoop.json deleted file mode 100644 index d94587fcb..000000000 --- a/tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol.0.5.16.DelegatecallInLoop.json +++ /dev/null @@ -1,542 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 738, - "length": 312, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 931, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 17, - "ending_column": 105 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 738, - "length": 312, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - } - } - } - ], - "description": "C.bad3(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#25-31) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#28)\n", - "markdown": "[C.bad3(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#L25-L31) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#L28)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#L25-L31", - "id": "2bb1d5246bbd1909dd6a155843116289ce711f41ad69b8f4449272edb2c5884f", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 496, - "length": 236, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 627, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 496, - "length": 236, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address[])" - } - } - } - } - ], - "description": "C.bad2_internal(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#19-23) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#21)\n", - "markdown": "[C.bad2_internal(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#L19-L23) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#L21)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#L19-L23", - "id": "5fe4854bde1eae7f4e80865a5244c15203ddf7274177ae4d592ec807358ae8d4", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 188, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - } - } - } - ], - "description": "C.bad(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#5-9) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#7)\n", - "markdown": "[C.bad(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#L5-L9) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.5.16/delegatecall_loop.sol#L5-L9", - "id": "71f8693b47930de0717a75f8e0eb8f13f3e33d92a9307d69e8f10063af25c2c1", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol.0.6.11.DelegatecallInLoop.json b/tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol.0.6.11.DelegatecallInLoop.json deleted file mode 100644 index 0cc3b55b1..000000000 --- a/tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol.0.6.11.DelegatecallInLoop.json +++ /dev/null @@ -1,542 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 496, - "length": 236, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 627, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 496, - "length": 236, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address[])" - } - } - } - } - ], - "description": "C.bad2_internal(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#19-23) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#21)\n", - "markdown": "[C.bad2_internal(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#L19-L23) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#L21)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#L19-L23", - "id": "97dc1b51f8421dc1aacb9e61148276a0847bdeeef9c26728ab817f4c3ce8fd8d", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 188, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - } - } - } - ], - "description": "C.bad(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#5-9) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#7)\n", - "markdown": "[C.bad(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#L5-L9) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#L5-L9", - "id": "dc8778c51053755c51632930034da0c873adbf6645d4f94786948a0d05cf6dd9", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 738, - "length": 312, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 931, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 17, - "ending_column": 105 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 738, - "length": 312, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - } - } - } - ], - "description": "C.bad3(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#25-31) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#28)\n", - "markdown": "[C.bad3(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#L25-L31) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#L28)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.6.11/delegatecall_loop.sol#L25-L31", - "id": "de66bd5e8cc1629598220beba34d036a8d5ffe2fb46d58203b83dc388371c44f", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol.0.7.6.DelegatecallInLoop.json b/tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol.0.7.6.DelegatecallInLoop.json deleted file mode 100644 index 87c8bb520..000000000 --- a/tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol.0.7.6.DelegatecallInLoop.json +++ /dev/null @@ -1,542 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 738, - "length": 312, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 931, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 17, - "ending_column": 105 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 738, - "length": 312, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - } - } - } - ], - "description": "C.bad3(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#25-31) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#28)\n", - "markdown": "[C.bad3(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#L25-L31) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#L28)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#L25-L31", - "id": "22297edc513f30360b22344a1a3a22592bd6bb7ff59c001682e38e45497cf3d5", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 188, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - } - } - } - ], - "description": "C.bad(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#5-9) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#7)\n", - "markdown": "[C.bad(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#L5-L9) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#L5-L9", - "id": "cc5994221aa31f9739264e5be5c60cc2762bc652cb75d6de3c27a2ae5b354925", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 496, - "length": 236, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 627, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 496, - "length": 236, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address[])" - } - } - } - } - ], - "description": "C.bad2_internal(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#19-23) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#21)\n", - "markdown": "[C.bad2_internal(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#L19-L23) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#L21)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.7.6/delegatecall_loop.sol#L19-L23", - "id": "ff0a3a52fabc95be0e7bba07f943922d2a167f235da04acebc196b31794db9a8", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol.0.8.0.DelegatecallInLoop.json b/tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol.0.8.0.DelegatecallInLoop.json deleted file mode 100644 index 5b9c798a8..000000000 --- a/tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol.0.8.0.DelegatecallInLoop.json +++ /dev/null @@ -1,542 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 496, - "length": 236, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 627, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 496, - "length": 236, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address[])" - } - } - } - } - ], - "description": "C.bad2_internal(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#19-23) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#21)\n", - "markdown": "[C.bad2_internal(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#L19-L23) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#L21)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#L19-L23", - "id": "70eb4ee10daaff19bd10786cf08e02a9054a483051bce2745b451aa3a9e37e34", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 188, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - } - } - } - ], - "description": "C.bad(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#5-9) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#7)\n", - "markdown": "[C.bad(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#L5-L9) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#L5-L9", - "id": "a7688352c79b5cc2fbe653e77c2e848245885b7e0a1706efc2d6856c54ff9e13", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 738, - "length": 312, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - }, - { - "type": "node", - "name": "address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))", - "source_mapping": { - "start": 931, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 17, - "ending_column": 105 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 738, - "length": 312, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1053, - "filename_relative": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - } - } - } - ], - "description": "C.bad3(address[]) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#25-31) has delegatecall inside a loop in a payable function: address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i])) (tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#28)\n", - "markdown": "[C.bad3(address[])](tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#L25-L31) has delegatecall inside a loop in a payable function: [address(this).delegatecall(abi.encodeWithSignature(addBalance(address),receivers[i]))](tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#L28)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/delegatecall-loop/0.8.0/delegatecall_loop.sol#L25-L31", - "id": "dcea54e7b19718e877e0b79c5ac7e66b6b70a2bc354a6580bdfbbf1de30abce2", - "check": "delegatecall-loop", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol.0.4.25.DeprecatedStandards.json b/tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol.0.4.25.DeprecatedStandards.json deleted file mode 100644 index c52e23769..000000000 --- a/tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol.0.4.25.DeprecatedStandards.json +++ /dev/null @@ -1,170 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "node", - "name": "", - "source_mapping": { - "start": 228, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionWithDeprecatedThrow", - "source_mapping": { - "start": 21, - "length": 229, - "filename_relative": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 252, - "filename_relative": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "functionWithDeprecatedThrow()" - } - } - } - } - ], - "description": "Deprecated standard detected THROW (tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol#7):\n\t- Usage of \"throw\" should be replaced with \"revert()\"\n", - "markdown": "Deprecated standard detected [THROW](tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol#L7):\n\t- Usage of \"throw\" should be replaced with \"revert()\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol#L7", - "id": "26dcbbdf287ff1629f847bf78caee220ca0830267d2665347f845c310a22286c", - "check": "deprecated-standards", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "msg.gas == msg.value", - "source_mapping": { - "start": 140, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 12, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "functionWithDeprecatedThrow", - "source_mapping": { - "start": 21, - "length": 229, - "filename_relative": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 252, - "filename_relative": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "functionWithDeprecatedThrow()" - } - } - } - } - ], - "description": "Deprecated standard detected msg.gas == msg.value (tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol#5):\n\t- Usage of \"msg.gas\" should be replaced with \"gasleft()\"\n", - "markdown": "Deprecated standard detected [msg.gas == msg.value](tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol#L5):\n\t- Usage of \"msg.gas\" should be replaced with \"gasleft()\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/deprecated-standards/0.4.25/deprecated_calls.sol#L5", - "id": "f3f66795b4505e6ce51ac20392919e6ea6dc57a05dc750d001fb6c35383ecbc8", - "check": "deprecated-standards", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol.0.4.25.DivideBeforeMultiply.json b/tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol.0.4.25.DivideBeforeMultiply.json deleted file mode 100644 index 152635d83..000000000 --- a/tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol.0.4.25.DivideBeforeMultiply.json +++ /dev/null @@ -1,122 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 92, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 2, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "(a / b) * c", - "source_mapping": { - "start": 81, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 92, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 2, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "A.f(uint256,uint256,uint256) (tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol#2-4) performs a multiplication on the result of a division:\n\t- (a / b) * c (tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol#3)\n", - "markdown": "[A.f(uint256,uint256,uint256)](tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol#L2-L4) performs a multiplication on the result of a division:\n\t- [(a / b) * c](tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/divide-before-multiply/0.4.25/divide_before_multiply.sol#L2-L4", - "id": "9eef59cec9988c02e41363b250508d23dbe0d7a0536a3f482e41cb15f3a051fe", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol.0.5.16.DivideBeforeMultiply.json b/tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol.0.5.16.DivideBeforeMultiply.json deleted file mode 100644 index 30936c73c..000000000 --- a/tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol.0.5.16.DivideBeforeMultiply.json +++ /dev/null @@ -1,122 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 92, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 2, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "(a / b) * c", - "source_mapping": { - "start": 81, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 92, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 2, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "A.f(uint256,uint256,uint256) (tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol#2-4) performs a multiplication on the result of a division:\n\t- (a / b) * c (tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol#3)\n", - "markdown": "[A.f(uint256,uint256,uint256)](tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol#L2-L4) performs a multiplication on the result of a division:\n\t- [(a / b) * c](tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/divide-before-multiply/0.5.16/divide_before_multiply.sol#L2-L4", - "id": "22bda82bb0916d099f66a9324a25a33d583986a0b0b7c606f19f5ca21c0f9e8d", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol.0.6.11.DivideBeforeMultiply.json b/tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol.0.6.11.DivideBeforeMultiply.json deleted file mode 100644 index e6fc7d050..000000000 --- a/tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol.0.6.11.DivideBeforeMultiply.json +++ /dev/null @@ -1,122 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 92, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 2, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "(a / b) * c", - "source_mapping": { - "start": 81, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 92, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 2, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "A.f(uint256,uint256,uint256) (tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol#2-4) performs a multiplication on the result of a division:\n\t- (a / b) * c (tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol#3)\n", - "markdown": "[A.f(uint256,uint256,uint256)](tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol#L2-L4) performs a multiplication on the result of a division:\n\t- [(a / b) * c](tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/divide-before-multiply/0.6.11/divide_before_multiply.sol#L2-L4", - "id": "f01862ecf960e9296449030a63cfe0d195b79ca26d7cf81fbb947ea581a6a568", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol.0.7.6.DivideBeforeMultiply.json b/tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol.0.7.6.DivideBeforeMultiply.json deleted file mode 100644 index 00a4d1842..000000000 --- a/tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol.0.7.6.DivideBeforeMultiply.json +++ /dev/null @@ -1,122 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 92, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 2, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256,uint256,uint256)" - } - }, - { - "type": "node", - "name": "(a / b) * c", - "source_mapping": { - "start": 81, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 92, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 2, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256,uint256,uint256)" - } - } - } - } - ], - "description": "A.f(uint256,uint256,uint256) (tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol#2-4) performs a multiplication on the result of a division:\n\t- (a / b) * c (tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol#3)\n", - "markdown": "[A.f(uint256,uint256,uint256)](tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol#L2-L4) performs a multiplication on the result of a division:\n\t- [(a / b) * c](tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/divide-before-multiply/0.7.6/divide_before_multiply.sol#L2-L4", - "id": "5405e11c3feed3a757b92b455de6a3f32ad21ca65783d8e23cb70d54597eb1cd", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol.0.4.25.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol.0.4.25.DomainSeparatorCollision.json deleted file mode 100644 index 88a1c3192..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol.0.4.25.DomainSeparatorCollision.json +++ /dev/null @@ -1,252 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "fopwCDKKK", - "source_mapping": { - "start": 5241, - "length": 150, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol", - "is_dependency": false, - "lines": [ - 161, - 162, - 163 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6181, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "fopwCDKKK()" - } - } - ], - "description": "The function signature of ERC20.fopwCDKKK() (tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.fopwCDKKK()](tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol#L161-L163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_collision.sol#L161-L163", - "id": "cb8ae27add92ad3163cbe9c0fb29a2a0032ba46384bbd5541d1d750251f5c83e", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol.0.4.25.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol.0.4.25.DomainSeparatorCollision.json deleted file mode 100644 index b528a2236..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol.0.4.25.DomainSeparatorCollision.json +++ /dev/null @@ -1,247 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "fopwCDKKK", - "source_mapping": { - "start": 1735, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6054, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "The function signature of ERC20.fopwCDKKK (tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol#46) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.fopwCDKKK](tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol#L46) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_state_var_collision.sol#L46", - "id": "8d18da367a9cfe0bee2ee48ee8a76072af23567d852cc81ed75dd90531cbe3d5", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol.0.4.25.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol.0.4.25.DomainSeparatorCollision.json deleted file mode 100644 index ff446517f..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol.0.4.25.DomainSeparatorCollision.json +++ /dev/null @@ -1,252 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "DOMAIN_SEPARATOR", - "source_mapping": { - "start": 5248, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol", - "is_dependency": false, - "lines": [ - 161, - 162, - 163 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6128, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "DOMAIN_SEPARATOR()" - } - } - ], - "description": "The function signature of ERC20.DOMAIN_SEPARATOR() (tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.DOMAIN_SEPARATOR()](tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol#L161-L163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.4.25/permit_domain_wrong_return_type.sol#L161-L163", - "id": "17ee24b60ef7d108871021639c374d6711feb1c8e3aad52ab266a680c03831cb", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol.0.5.16.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol.0.5.16.DomainSeparatorCollision.json deleted file mode 100644 index 4fc8f3b48..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol.0.5.16.DomainSeparatorCollision.json +++ /dev/null @@ -1,252 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "fopwCDKKK", - "source_mapping": { - "start": 5248, - "length": 150, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol", - "is_dependency": false, - "lines": [ - 161, - 162, - 163 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6188, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "fopwCDKKK()" - } - } - ], - "description": "The function signature of ERC20.fopwCDKKK() (tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.fopwCDKKK()](tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol#L161-L163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_collision.sol#L161-L163", - "id": "cb8ae27add92ad3163cbe9c0fb29a2a0032ba46384bbd5541d1d750251f5c83e", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol.0.5.16.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol.0.5.16.DomainSeparatorCollision.json deleted file mode 100644 index d69104adb..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol.0.5.16.DomainSeparatorCollision.json +++ /dev/null @@ -1,247 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "fopwCDKKK", - "source_mapping": { - "start": 1735, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6061, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "The function signature of ERC20.fopwCDKKK (tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol#46) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.fopwCDKKK](tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol#L46) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_state_var_collision.sol#L46", - "id": "8d18da367a9cfe0bee2ee48ee8a76072af23567d852cc81ed75dd90531cbe3d5", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol.0.5.16.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol.0.5.16.DomainSeparatorCollision.json deleted file mode 100644 index 36077b76f..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol.0.5.16.DomainSeparatorCollision.json +++ /dev/null @@ -1,252 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "DOMAIN_SEPARATOR", - "source_mapping": { - "start": 5255, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol", - "is_dependency": false, - "lines": [ - 161, - 162, - 163 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6135, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "DOMAIN_SEPARATOR()" - } - } - ], - "description": "The function signature of ERC20.DOMAIN_SEPARATOR() (tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.DOMAIN_SEPARATOR()](tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol#L161-L163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.5.16/permit_domain_wrong_return_type.sol#L161-L163", - "id": "17ee24b60ef7d108871021639c374d6711feb1c8e3aad52ab266a680c03831cb", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol.0.6.11.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol.0.6.11.DomainSeparatorCollision.json deleted file mode 100644 index 2442f6191..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol.0.6.11.DomainSeparatorCollision.json +++ /dev/null @@ -1,252 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "fopwCDKKK", - "source_mapping": { - "start": 5248, - "length": 150, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol", - "is_dependency": false, - "lines": [ - 161, - 162, - 163 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6188, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "fopwCDKKK()" - } - } - ], - "description": "The function signature of ERC20.fopwCDKKK() (tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.fopwCDKKK()](tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol#L161-L163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_collision.sol#L161-L163", - "id": "cb8ae27add92ad3163cbe9c0fb29a2a0032ba46384bbd5541d1d750251f5c83e", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol.0.6.11.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol.0.6.11.DomainSeparatorCollision.json deleted file mode 100644 index c875e2aea..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol.0.6.11.DomainSeparatorCollision.json +++ /dev/null @@ -1,247 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "fopwCDKKK", - "source_mapping": { - "start": 1735, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6061, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "The function signature of ERC20.fopwCDKKK (tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol#46) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.fopwCDKKK](tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol#L46) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_state_var_collision.sol#L46", - "id": "8d18da367a9cfe0bee2ee48ee8a76072af23567d852cc81ed75dd90531cbe3d5", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol.0.6.11.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol.0.6.11.DomainSeparatorCollision.json deleted file mode 100644 index 691c07d65..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol.0.6.11.DomainSeparatorCollision.json +++ /dev/null @@ -1,252 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "DOMAIN_SEPARATOR", - "source_mapping": { - "start": 5255, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol", - "is_dependency": false, - "lines": [ - 161, - 162, - 163 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6135, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "DOMAIN_SEPARATOR()" - } - } - ], - "description": "The function signature of ERC20.DOMAIN_SEPARATOR() (tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.DOMAIN_SEPARATOR()](tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol#L161-L163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.6.11/permit_domain_wrong_return_type.sol#L161-L163", - "id": "17ee24b60ef7d108871021639c374d6711feb1c8e3aad52ab266a680c03831cb", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol.0.7.6.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol.0.7.6.DomainSeparatorCollision.json deleted file mode 100644 index 5d594c2a4..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol.0.7.6.DomainSeparatorCollision.json +++ /dev/null @@ -1,252 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "fopwCDKKK", - "source_mapping": { - "start": 5248, - "length": 150, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol", - "is_dependency": false, - "lines": [ - 161, - 162, - 163 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6188, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "fopwCDKKK()" - } - } - ], - "description": "The function signature of ERC20.fopwCDKKK() (tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.fopwCDKKK()](tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol#L161-L163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_collision.sol#L161-L163", - "id": "cb8ae27add92ad3163cbe9c0fb29a2a0032ba46384bbd5541d1d750251f5c83e", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol.0.7.6.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol.0.7.6.DomainSeparatorCollision.json deleted file mode 100644 index 8574e4619..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol.0.7.6.DomainSeparatorCollision.json +++ /dev/null @@ -1,247 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "fopwCDKKK", - "source_mapping": { - "start": 1735, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6061, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "The function signature of ERC20.fopwCDKKK (tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol#46) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.fopwCDKKK](tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol#L46) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_state_var_collision.sol#L46", - "id": "8d18da367a9cfe0bee2ee48ee8a76072af23567d852cc81ed75dd90531cbe3d5", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol.0.7.6.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol.0.7.6.DomainSeparatorCollision.json deleted file mode 100644 index 5d9a120c9..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol.0.7.6.DomainSeparatorCollision.json +++ /dev/null @@ -1,252 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "DOMAIN_SEPARATOR", - "source_mapping": { - "start": 5248, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol", - "is_dependency": false, - "lines": [ - 161, - 162, - 163 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6128, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "DOMAIN_SEPARATOR()" - } - } - ], - "description": "The function signature of ERC20.DOMAIN_SEPARATOR() (tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.DOMAIN_SEPARATOR()](tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol#L161-L163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.7.6/permit_domain_wrong_return_type.sol#L161-L163", - "id": "17ee24b60ef7d108871021639c374d6711feb1c8e3aad52ab266a680c03831cb", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol.0.8.0.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol.0.8.0.DomainSeparatorCollision.json deleted file mode 100644 index 14fe7a3fc..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol.0.8.0.DomainSeparatorCollision.json +++ /dev/null @@ -1,252 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "fopwCDKKK", - "source_mapping": { - "start": 5295, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol", - "is_dependency": false, - "lines": [ - 161, - 162, - 163 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6323, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "fopwCDKKK()" - } - } - ], - "description": "The function signature of ERC20.fopwCDKKK() (tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.fopwCDKKK()](tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol#L161-L163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_collision.sol#L161-L163", - "id": "cb8ae27add92ad3163cbe9c0fb29a2a0032ba46384bbd5541d1d750251f5c83e", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol.0.8.0.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol.0.8.0.DomainSeparatorCollision.json deleted file mode 100644 index 8842da5b0..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol.0.8.0.DomainSeparatorCollision.json +++ /dev/null @@ -1,247 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "fopwCDKKK", - "source_mapping": { - "start": 1735, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6061, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "The function signature of ERC20.fopwCDKKK (tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol#46) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.fopwCDKKK](tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol#L46) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_state_var_collision.sol#L46", - "id": "8d18da367a9cfe0bee2ee48ee8a76072af23567d852cc81ed75dd90531cbe3d5", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol.0.8.0.DomainSeparatorCollision.json b/tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol.0.8.0.DomainSeparatorCollision.json deleted file mode 100644 index 6a6f7623c..000000000 --- a/tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol.0.8.0.DomainSeparatorCollision.json +++ /dev/null @@ -1,252 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "DOMAIN_SEPARATOR", - "source_mapping": { - "start": 5248, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol", - "is_dependency": false, - "lines": [ - 161, - 162, - 163 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20", - "source_mapping": { - "start": 449, - "length": 6128, - "filename_relative": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "DOMAIN_SEPARATOR()" - } - } - ], - "description": "The function signature of ERC20.DOMAIN_SEPARATOR() (tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol#161-163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "markdown": "The function signature of [ERC20.DOMAIN_SEPARATOR()](tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol#L161-L163) collides with DOMAIN_SEPARATOR and should be renamed or removed.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/domain-separator-collision/0.8.0/permit_domain_wrong_return_type.sol#L161-L163", - "id": "17ee24b60ef7d108871021639c374d6711feb1c8e3aad52ab266a680c03831cb", - "check": "domain-separator-collision", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/enum-conversion/0.4.2/enum_conversion.sol.0.4.2.EnumConversion.json b/tests/e2e/detectors/test_data/enum-conversion/0.4.2/enum_conversion.sol.0.4.2.EnumConversion.json deleted file mode 100644 index 8eab7b7df..000000000 --- a/tests/e2e/detectors/test_data/enum-conversion/0.4.2/enum_conversion.sol.0.4.2.EnumConversion.json +++ /dev/null @@ -1,222 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "node", - "name": "Test.E(a)", - "source_mapping": { - "start": 118, - "length": 11, - "filename_used": "/GENERIC_PATH", - "filename_relative": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 70, - "length": 69, - "filename_used": "/GENERIC_PATH", - "filename_relative": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 27, - "length": 114, - "filename_used": "/GENERIC_PATH", - "filename_relative": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 0 - } - }, - "signature": "bug(uint256)" - } - } - } - }, - { - "type": "variable", - "name": "a", - "source_mapping": { - "start": 83, - "length": 6, - "filename_used": "/GENERIC_PATH", - "filename_relative": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 18, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 70, - "length": 69, - "filename_used": "/GENERIC_PATH", - "filename_relative": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 27, - "length": 114, - "filename_used": "/GENERIC_PATH", - "filename_relative": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 0 - } - }, - "signature": "bug(uint256)" - } - } - } - }, - { - "type": "node", - "name": "Test.E(a)", - "source_mapping": { - "start": 118, - "length": 11, - "filename_used": "/GENERIC_PATH", - "filename_relative": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 9, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 70, - "length": 69, - "filename_used": "/GENERIC_PATH", - "filename_relative": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 27, - "length": 114, - "filename_used": "/GENERIC_PATH", - "filename_relative": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 0 - } - }, - "signature": "bug(uint256)" - } - } - } - } - ], - "description": "Test.E(a) (tests/detectors/enum-conversion/0.4.2/enum_conversion.sol#7) has a dangerous enum conversion\n\t- Variable: Test.bug(uint256).a (tests/detectors/enum-conversion/0.4.2/enum_conversion.sol#6) of type: uint256\n\t- Enum conversion: Test.E(a) (tests/detectors/enum-conversion/0.4.2/enum_conversion.sol#7)\n", - "markdown": "[Test.E(a)](tests/detectors/enum-conversion/0.4.2/enum_conversion.sol#L7) has a dangerous enum conversion\n\t- Variable: [Test.bug(uint256).a](tests/detectors/enum-conversion/0.4.2/enum_conversion.sol#L6) of type: uint256\n\t- Enum conversion: [Test.E(a)](tests/detectors/enum-conversion/0.4.2/enum_conversion.sol#L7)\n", - "first_markdown_element": "tests/detectors/enum-conversion/0.4.2/enum_conversion.sol#L7", - "id": "f16bcdd6943fe3ff7ed6cc9b729ed5f95f61375509c7cce6646efa44c69860b7", - "check": "enum-conversion", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol.0.4.25.UnindexedERC20EventParameters.json b/tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol.0.4.25.UnindexedERC20EventParameters.json deleted file mode 100644 index d53fd0cb2..000000000 --- a/tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol.0.4.25.UnindexedERC20EventParameters.json +++ /dev/null @@ -1,244 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "event", - "name": "Transfer", - "source_mapping": { - "start": 1090, - "length": 53, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 622, - "length": 587, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Transfer(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "to" - } - } - ], - "description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#19)does not index parameter to\n", - "markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#L19)does not index parameter to\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#L19", - "id": "29c46eb3a4695004959847ae09377729cdf3aa583de95560090b9bd49977c49b", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Approval", - "source_mapping": { - "start": 1148, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 622, - "length": 587, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Approval(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "owner" - } - } - ], - "description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#20)does not index parameter owner\n", - "markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#L20)does not index parameter owner\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#L20", - "id": "7d72b56a71ca96db304878f25484c496af1d283a9b777dc788f1473974057025", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Transfer", - "source_mapping": { - "start": 1090, - "length": 53, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 622, - "length": 587, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Transfer(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "from" - } - } - ], - "description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#19)does not index parameter from\n", - "markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#L19)does not index parameter from\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#L19", - "id": "a86c7a54115f270548e82d71570dc4d2900b622b0f82c6fce137f3a35314af53", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Approval", - "source_mapping": { - "start": 1148, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 622, - "length": 587, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Approval(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "spender" - } - } - ], - "description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#20)does not index parameter spender\n", - "markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#L20)does not index parameter spender\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#L20", - "id": "df4d927d202bdca1fc411d6960d3f62ed2784f5eca7435cb0503f4154f2e3bc6", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol.0.5.16.UnindexedERC20EventParameters.json b/tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol.0.5.16.UnindexedERC20EventParameters.json deleted file mode 100644 index 00426cbf4..000000000 --- a/tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol.0.5.16.UnindexedERC20EventParameters.json +++ /dev/null @@ -1,244 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "event", - "name": "Transfer", - "source_mapping": { - "start": 1090, - "length": 53, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 622, - "length": 587, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Transfer(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "to" - } - } - ], - "description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#19)does not index parameter to\n", - "markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#L19)does not index parameter to\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#L19", - "id": "29c46eb3a4695004959847ae09377729cdf3aa583de95560090b9bd49977c49b", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Approval", - "source_mapping": { - "start": 1148, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 622, - "length": 587, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Approval(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "owner" - } - } - ], - "description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#20)does not index parameter owner\n", - "markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#L20)does not index parameter owner\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#L20", - "id": "7d72b56a71ca96db304878f25484c496af1d283a9b777dc788f1473974057025", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Transfer", - "source_mapping": { - "start": 1090, - "length": 53, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 622, - "length": 587, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Transfer(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "from" - } - } - ], - "description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#19)does not index parameter from\n", - "markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#L19)does not index parameter from\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#L19", - "id": "a86c7a54115f270548e82d71570dc4d2900b622b0f82c6fce137f3a35314af53", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Approval", - "source_mapping": { - "start": 1148, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 622, - "length": 587, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Approval(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "spender" - } - } - ], - "description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#20)does not index parameter spender\n", - "markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#L20)does not index parameter spender\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#L20", - "id": "df4d927d202bdca1fc411d6960d3f62ed2784f5eca7435cb0503f4154f2e3bc6", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol.0.6.11.UnindexedERC20EventParameters.json b/tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol.0.6.11.UnindexedERC20EventParameters.json deleted file mode 100644 index c1a9800af..000000000 --- a/tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol.0.6.11.UnindexedERC20EventParameters.json +++ /dev/null @@ -1,244 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "event", - "name": "Transfer", - "source_mapping": { - "start": 1204, - "length": 53, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 679, - "length": 644, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Transfer(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "to" - } - } - ], - "description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#19)does not index parameter to\n", - "markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#L19)does not index parameter to\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#L19", - "id": "29c46eb3a4695004959847ae09377729cdf3aa583de95560090b9bd49977c49b", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Approval", - "source_mapping": { - "start": 1262, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 679, - "length": 644, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Approval(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "owner" - } - } - ], - "description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#20)does not index parameter owner\n", - "markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#L20)does not index parameter owner\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#L20", - "id": "7d72b56a71ca96db304878f25484c496af1d283a9b777dc788f1473974057025", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Transfer", - "source_mapping": { - "start": 1204, - "length": 53, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 679, - "length": 644, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Transfer(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "from" - } - } - ], - "description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#19)does not index parameter from\n", - "markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#L19)does not index parameter from\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#L19", - "id": "a86c7a54115f270548e82d71570dc4d2900b622b0f82c6fce137f3a35314af53", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Approval", - "source_mapping": { - "start": 1262, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 679, - "length": 644, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Approval(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "spender" - } - } - ], - "description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#20)does not index parameter spender\n", - "markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#L20)does not index parameter spender\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#L20", - "id": "df4d927d202bdca1fc411d6960d3f62ed2784f5eca7435cb0503f4154f2e3bc6", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol.0.7.6.UnindexedERC20EventParameters.json b/tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol.0.7.6.UnindexedERC20EventParameters.json deleted file mode 100644 index 8b9bcb4a4..000000000 --- a/tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol.0.7.6.UnindexedERC20EventParameters.json +++ /dev/null @@ -1,244 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "event", - "name": "Transfer", - "source_mapping": { - "start": 1204, - "length": 53, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 679, - "length": 644, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Transfer(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "to" - } - } - ], - "description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#19)does not index parameter to\n", - "markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#L19)does not index parameter to\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#L19", - "id": "29c46eb3a4695004959847ae09377729cdf3aa583de95560090b9bd49977c49b", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Approval", - "source_mapping": { - "start": 1262, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 679, - "length": 644, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Approval(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "owner" - } - } - ], - "description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#20)does not index parameter owner\n", - "markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#L20)does not index parameter owner\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#L20", - "id": "7d72b56a71ca96db304878f25484c496af1d283a9b777dc788f1473974057025", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Transfer", - "source_mapping": { - "start": 1204, - "length": 53, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 679, - "length": 644, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Transfer(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "from" - } - } - ], - "description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#19)does not index parameter from\n", - "markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#L19)does not index parameter from\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#L19", - "id": "a86c7a54115f270548e82d71570dc4d2900b622b0f82c6fce137f3a35314af53", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "Approval", - "source_mapping": { - "start": 1262, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC20Bad", - "source_mapping": { - "start": 679, - "length": 644, - "filename_relative": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "Approval(address,address,uint256)" - }, - "additional_fields": { - "parameter_name": "spender" - } - } - ], - "description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#20)does not index parameter spender\n", - "markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#L20)does not index parameter spender\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#L20", - "id": "df4d927d202bdca1fc411d6960d3f62ed2784f5eca7435cb0503f4154f2e3bc6", - "check": "erc20-indexed", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol.0.4.25.IncorrectERC20InterfaceDetection.json b/tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol.0.4.25.IncorrectERC20InterfaceDetection.json deleted file mode 100644 index 273a00557..000000000 --- a/tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol.0.4.25.IncorrectERC20InterfaceDetection.json +++ /dev/null @@ -1,478 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "approve", - "source_mapping": { - "start": 102, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "approve(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#5)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.approve(address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L5)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10", - "id": "0fced3029cf59cf348a6b79c58dbb032d837fdd5a5f355600edebda1878e9e2e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "allowance", - "source_mapping": { - "start": 319, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "allowance(address,address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#9)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.allowance(address,address)](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10", - "id": "1286abfe21b09e21e1cec8b991f73664e104fa39f7f4190690ece3af45bc0c7a", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "balanceOf", - "source_mapping": { - "start": 273, - "length": 41, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "balanceOf(address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#8)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.balanceOf(address)](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10", - "id": "758ca2456030a36dbd6115f2ccb1a43f53f1dabd66ed079806df0f6b7b4d21ef", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transferFrom", - "source_mapping": { - "start": 162, - "length": 69, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 74 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#6)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10", - "id": "ba13a1588595032984a3fad39610a2414bb8fcb522d1e632d52fa947ff207d73", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "totalSupply", - "source_mapping": { - "start": 236, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "totalSupply()" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#7)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.totalSupply()](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10", - "id": "c951e429e546af28ac08e241d391e874c1c9c70b0732ccfb63f3bbfb3eaac16e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transfer", - "source_mapping": { - "start": 46, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 56 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 26, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transfer(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#4)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transfer(address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10", - "id": "d3df2e48ae6e8a1b05b275de574b480853a0839c272ce889e8a1664ae432698e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol.0.5.16.IncorrectERC20InterfaceDetection.json b/tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol.0.5.16.IncorrectERC20InterfaceDetection.json deleted file mode 100644 index 5a0d705e1..000000000 --- a/tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol.0.5.16.IncorrectERC20InterfaceDetection.json +++ /dev/null @@ -1,478 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "approve", - "source_mapping": { - "start": 105, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "approve(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#5)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.approve(address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L5)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10", - "id": "0fced3029cf59cf348a6b79c58dbb032d837fdd5a5f355600edebda1878e9e2e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "allowance", - "source_mapping": { - "start": 322, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "allowance(address,address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#9)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.allowance(address,address)](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10", - "id": "1286abfe21b09e21e1cec8b991f73664e104fa39f7f4190690ece3af45bc0c7a", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "balanceOf", - "source_mapping": { - "start": 276, - "length": 41, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "balanceOf(address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#8)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.balanceOf(address)](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10", - "id": "758ca2456030a36dbd6115f2ccb1a43f53f1dabd66ed079806df0f6b7b4d21ef", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transferFrom", - "source_mapping": { - "start": 165, - "length": 69, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 74 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#6)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10", - "id": "ba13a1588595032984a3fad39610a2414bb8fcb522d1e632d52fa947ff207d73", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "totalSupply", - "source_mapping": { - "start": 239, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "totalSupply()" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#7)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.totalSupply()](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10", - "id": "c951e429e546af28ac08e241d391e874c1c9c70b0732ccfb63f3bbfb3eaac16e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transfer", - "source_mapping": { - "start": 49, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 56 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 355, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transfer(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#4)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transfer(address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10", - "id": "d3df2e48ae6e8a1b05b275de574b480853a0839c272ce889e8a1664ae432698e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol.0.6.11.IncorrectERC20InterfaceDetection.json b/tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol.0.6.11.IncorrectERC20InterfaceDetection.json deleted file mode 100644 index d72d67240..000000000 --- a/tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol.0.6.11.IncorrectERC20InterfaceDetection.json +++ /dev/null @@ -1,478 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "approve", - "source_mapping": { - "start": 122, - "length": 63, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "approve(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#5)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.approve(address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L5)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10", - "id": "0fced3029cf59cf348a6b79c58dbb032d837fdd5a5f355600edebda1878e9e2e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "allowance", - "source_mapping": { - "start": 371, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "allowance(address,address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#9)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.allowance(address,address)](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10", - "id": "1286abfe21b09e21e1cec8b991f73664e104fa39f7f4190690ece3af45bc0c7a", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "balanceOf", - "source_mapping": { - "start": 317, - "length": 49, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "balanceOf(address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#8)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.balanceOf(address)](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10", - "id": "758ca2456030a36dbd6115f2ccb1a43f53f1dabd66ed079806df0f6b7b4d21ef", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transferFrom", - "source_mapping": { - "start": 190, - "length": 77, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#6)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10", - "id": "ba13a1588595032984a3fad39610a2414bb8fcb522d1e632d52fa947ff207d73", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "totalSupply", - "source_mapping": { - "start": 272, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "totalSupply()" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#7)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.totalSupply()](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10", - "id": "c951e429e546af28ac08e241d391e874c1c9c70b0732ccfb63f3bbfb3eaac16e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transfer", - "source_mapping": { - "start": 58, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transfer(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#4)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transfer(address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10", - "id": "d3df2e48ae6e8a1b05b275de574b480853a0839c272ce889e8a1664ae432698e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol.0.7.6.IncorrectERC20InterfaceDetection.json b/tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol.0.7.6.IncorrectERC20InterfaceDetection.json deleted file mode 100644 index 667be6e4d..000000000 --- a/tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol.0.7.6.IncorrectERC20InterfaceDetection.json +++ /dev/null @@ -1,478 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "approve", - "source_mapping": { - "start": 122, - "length": 63, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "approve(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#5)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.approve(address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L5)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10", - "id": "0fced3029cf59cf348a6b79c58dbb032d837fdd5a5f355600edebda1878e9e2e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "allowance", - "source_mapping": { - "start": 371, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "allowance(address,address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#9)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.allowance(address,address)](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10", - "id": "1286abfe21b09e21e1cec8b991f73664e104fa39f7f4190690ece3af45bc0c7a", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "balanceOf", - "source_mapping": { - "start": 317, - "length": 49, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "balanceOf(address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#8)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.balanceOf(address)](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10", - "id": "758ca2456030a36dbd6115f2ccb1a43f53f1dabd66ed079806df0f6b7b4d21ef", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transferFrom", - "source_mapping": { - "start": 190, - "length": 77, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#6)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10", - "id": "ba13a1588595032984a3fad39610a2414bb8fcb522d1e632d52fa947ff207d73", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "totalSupply", - "source_mapping": { - "start": 272, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "totalSupply()" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#7)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.totalSupply()](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10", - "id": "c951e429e546af28ac08e241d391e874c1c9c70b0732ccfb63f3bbfb3eaac16e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transfer", - "source_mapping": { - "start": 58, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 29, - "length": 412, - "filename_relative": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transfer(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#4)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transfer(address,uint256)](tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10", - "id": "d3df2e48ae6e8a1b05b275de574b480853a0839c272ce889e8a1664ae432698e", - "check": "erc20-interface", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol.0.4.25.IncorrectERC721InterfaceDetection.json b/tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol.0.4.25.IncorrectERC721InterfaceDetection.json deleted file mode 100644 index 46f8c4e16..000000000 --- a/tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol.0.4.25.IncorrectERC721InterfaceDetection.json +++ /dev/null @@ -1,846 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "getApproved", - "source_mapping": { - "start": 723, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 5, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getApproved(uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#14)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.getApproved(uint256)](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16", - "id": "2dce4891c7abea0fa8a8a20a8b8482e7e1d46d54bfd750701c604d5dadd8b937", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "approve", - "source_mapping": { - "start": 549, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "approve(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#12)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.approve(address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16", - "id": "439c95972d0e084aff057161164b13ab63f85bee31d80b568b7155e58eac4b5d", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "safeTransferFrom", - "source_mapping": { - "start": 351, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 5, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#10)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16", - "id": "50ab7b0f39f327ac6deccf3c16b4e6fee1dc249072ac41a4bd485ccf0c12315b", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "balanceOf", - "source_mapping": { - "start": 140, - "length": 44, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "balanceOf(address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#7)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.balanceOf(address)](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16", - "id": "6fb9d0320e0b63e2c70f9844d5bea2be958e73beb6eaa4ccb2323ead0c7ef991", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "ownerOf", - "source_mapping": { - "start": 189, - "length": 44, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "ownerOf(uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#8)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.ownerOf(uint256)](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16", - "id": "7d9235dd4ef8bc29a3b7700597cc1e4efb846377c928e5e50c5f49cb37f288d2", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transferFrom", - "source_mapping": { - "start": 452, - "length": 92, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#11)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16", - "id": "847b11227f3bfc9b120e0ea573f385a4bbc61c4b7f89f434864612a679b1133e", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "supportsInterface", - "source_mapping": { - "start": 50, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC165", - "source_mapping": { - "start": 26, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "supportsInterface(bytes4)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#4)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[IERC165.supportsInterface(bytes4)](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16", - "id": "a8593587ca70c51a9ab827843babec3b3eb7f9a08d76eea1e5528e668f7b291d", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "setApprovalForAll", - "source_mapping": { - "start": 632, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 5, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setApprovalForAll(address,bool)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#13)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.setApprovalForAll(address,bool)](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L13)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16", - "id": "b95e9bb000fb073c25fdbd9fff7bf0a3c44e04e70fc1a7da27c94c6b7fb8be40", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "safeTransferFrom", - "source_mapping": { - "start": 238, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 113 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferFrom(address,address,uint256,bytes)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#9)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256,bytes)](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16", - "id": "ccec612c4b5db00ab59b766b5dde3f8d3a8c6408ef595ab08bff21628587e2a1", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "isApprovedForAll", - "source_mapping": { - "start": 776, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 109, - "length": 739, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "isApprovedForAll(address,address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#15)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.isApprovedForAll(address,address)](tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L15)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16", - "id": "fa9985c505689f9a45d1ac51e1dd8cf79eeb2c939946abfb5ac78f46e692d0eb", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol.0.5.16.IncorrectERC721InterfaceDetection.json b/tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol.0.5.16.IncorrectERC721InterfaceDetection.json deleted file mode 100644 index d8c39db5b..000000000 --- a/tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol.0.5.16.IncorrectERC721InterfaceDetection.json +++ /dev/null @@ -1,846 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "getApproved", - "source_mapping": { - "start": 735, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 5, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getApproved(uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#14)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.getApproved(uint256)](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16", - "id": "2dce4891c7abea0fa8a8a20a8b8482e7e1d46d54bfd750701c604d5dadd8b937", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "approve", - "source_mapping": { - "start": 561, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "approve(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#12)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.approve(address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16", - "id": "439c95972d0e084aff057161164b13ab63f85bee31d80b568b7155e58eac4b5d", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "safeTransferFrom", - "source_mapping": { - "start": 363, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 5, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#10)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16", - "id": "50ab7b0f39f327ac6deccf3c16b4e6fee1dc249072ac41a4bd485ccf0c12315b", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "balanceOf", - "source_mapping": { - "start": 143, - "length": 44, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "balanceOf(address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#7)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.balanceOf(address)](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16", - "id": "6fb9d0320e0b63e2c70f9844d5bea2be958e73beb6eaa4ccb2323ead0c7ef991", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "ownerOf", - "source_mapping": { - "start": 192, - "length": 44, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "ownerOf(uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#8)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.ownerOf(uint256)](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16", - "id": "7d9235dd4ef8bc29a3b7700597cc1e4efb846377c928e5e50c5f49cb37f288d2", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transferFrom", - "source_mapping": { - "start": 464, - "length": 92, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#11)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16", - "id": "847b11227f3bfc9b120e0ea573f385a4bbc61c4b7f89f434864612a679b1133e", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "supportsInterface", - "source_mapping": { - "start": 53, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC165", - "source_mapping": { - "start": 29, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "supportsInterface(bytes4)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#4)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[IERC165.supportsInterface(bytes4)](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16", - "id": "a8593587ca70c51a9ab827843babec3b3eb7f9a08d76eea1e5528e668f7b291d", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "setApprovalForAll", - "source_mapping": { - "start": 644, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 5, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setApprovalForAll(address,bool)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#13)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.setApprovalForAll(address,bool)](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L13)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16", - "id": "b95e9bb000fb073c25fdbd9fff7bf0a3c44e04e70fc1a7da27c94c6b7fb8be40", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "safeTransferFrom", - "source_mapping": { - "start": 241, - "length": 117, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 122 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferFrom(address,address,uint256,bytes)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#9)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256,bytes)](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16", - "id": "ccec612c4b5db00ab59b766b5dde3f8d3a8c6408ef595ab08bff21628587e2a1", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "isApprovedForAll", - "source_mapping": { - "start": 788, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 748, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "isApprovedForAll(address,address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#15)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.isApprovedForAll(address,address)](tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L15)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16", - "id": "fa9985c505689f9a45d1ac51e1dd8cf79eeb2c939946abfb5ac78f46e692d0eb", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol.0.6.11.IncorrectERC721InterfaceDetection.json b/tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol.0.6.11.IncorrectERC721InterfaceDetection.json deleted file mode 100644 index d4c53c821..000000000 --- a/tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol.0.6.11.IncorrectERC721InterfaceDetection.json +++ /dev/null @@ -1,846 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "getApproved", - "source_mapping": { - "start": 800, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 5, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getApproved(uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#14)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.getApproved(uint256)](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16", - "id": "2dce4891c7abea0fa8a8a20a8b8482e7e1d46d54bfd750701c604d5dadd8b937", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "approve", - "source_mapping": { - "start": 610, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "approve(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#12)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.approve(address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16", - "id": "439c95972d0e084aff057161164b13ab63f85bee31d80b568b7155e58eac4b5d", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "safeTransferFrom", - "source_mapping": { - "start": 396, - "length": 104, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 5, - "ending_column": 109 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#10)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16", - "id": "50ab7b0f39f327ac6deccf3c16b4e6fee1dc249072ac41a4bd485ccf0c12315b", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "balanceOf", - "source_mapping": { - "start": 152, - "length": 52, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "balanceOf(address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#7)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.balanceOf(address)](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16", - "id": "6fb9d0320e0b63e2c70f9844d5bea2be958e73beb6eaa4ccb2323ead0c7ef991", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "ownerOf", - "source_mapping": { - "start": 209, - "length": 52, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "ownerOf(uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#8)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.ownerOf(uint256)](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16", - "id": "7d9235dd4ef8bc29a3b7700597cc1e4efb846377c928e5e50c5f49cb37f288d2", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transferFrom", - "source_mapping": { - "start": 505, - "length": 100, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 105 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#11)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16", - "id": "847b11227f3bfc9b120e0ea573f385a4bbc61c4b7f89f434864612a679b1133e", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "supportsInterface", - "source_mapping": { - "start": 53, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC165", - "source_mapping": { - "start": 29, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "supportsInterface(bytes4)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#4)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[IERC165.supportsInterface(bytes4)](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16", - "id": "a8593587ca70c51a9ab827843babec3b3eb7f9a08d76eea1e5528e668f7b291d", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "setApprovalForAll", - "source_mapping": { - "start": 701, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 5, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setApprovalForAll(address,bool)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#13)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.setApprovalForAll(address,bool)](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L13)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16", - "id": "b95e9bb000fb073c25fdbd9fff7bf0a3c44e04e70fc1a7da27c94c6b7fb8be40", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "safeTransferFrom", - "source_mapping": { - "start": 266, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 130 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferFrom(address,address,uint256,bytes)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#9)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256,bytes)](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16", - "id": "ccec612c4b5db00ab59b766b5dde3f8d3a8c6408ef595ab08bff21628587e2a1", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "isApprovedForAll", - "source_mapping": { - "start": 861, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "isApprovedForAll(address,address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#15)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.isApprovedForAll(address,address)](tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L15)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16", - "id": "fa9985c505689f9a45d1ac51e1dd8cf79eeb2c939946abfb5ac78f46e692d0eb", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol.0.7.6.IncorrectERC721InterfaceDetection.json b/tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol.0.7.6.IncorrectERC721InterfaceDetection.json deleted file mode 100644 index 4e4e562ab..000000000 --- a/tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol.0.7.6.IncorrectERC721InterfaceDetection.json +++ /dev/null @@ -1,846 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "getApproved", - "source_mapping": { - "start": 800, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 5, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "getApproved(uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#14)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.getApproved(uint256)](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16", - "id": "2dce4891c7abea0fa8a8a20a8b8482e7e1d46d54bfd750701c604d5dadd8b937", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "approve", - "source_mapping": { - "start": 610, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "approve(address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#12)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.approve(address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16", - "id": "439c95972d0e084aff057161164b13ab63f85bee31d80b568b7155e58eac4b5d", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "safeTransferFrom", - "source_mapping": { - "start": 396, - "length": 104, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 5, - "ending_column": 109 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#10)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16", - "id": "50ab7b0f39f327ac6deccf3c16b4e6fee1dc249072ac41a4bd485ccf0c12315b", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "balanceOf", - "source_mapping": { - "start": 152, - "length": 52, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "balanceOf(address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#7)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.balanceOf(address)](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16", - "id": "6fb9d0320e0b63e2c70f9844d5bea2be958e73beb6eaa4ccb2323ead0c7ef991", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "ownerOf", - "source_mapping": { - "start": 209, - "length": 52, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "ownerOf(uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#8)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.ownerOf(uint256)](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16", - "id": "7d9235dd4ef8bc29a3b7700597cc1e4efb846377c928e5e50c5f49cb37f288d2", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "transferFrom", - "source_mapping": { - "start": 505, - "length": 100, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 105 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFrom(address,address,uint256)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#11)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16", - "id": "847b11227f3bfc9b120e0ea573f385a4bbc61c4b7f89f434864612a679b1133e", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "supportsInterface", - "source_mapping": { - "start": 53, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IERC165", - "source_mapping": { - "start": 29, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "supportsInterface(bytes4)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#4)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[IERC165.supportsInterface(bytes4)](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16", - "id": "a8593587ca70c51a9ab827843babec3b3eb7f9a08d76eea1e5528e668f7b291d", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "setApprovalForAll", - "source_mapping": { - "start": 701, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 5, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setApprovalForAll(address,bool)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#13)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.setApprovalForAll(address,bool)](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L13)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16", - "id": "b95e9bb000fb073c25fdbd9fff7bf0a3c44e04e70fc1a7da27c94c6b7fb8be40", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "safeTransferFrom", - "source_mapping": { - "start": 266, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 130 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "safeTransferFrom(address,address,uint256,bytes)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#9)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256,bytes)](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16", - "id": "ccec612c4b5db00ab59b766b5dde3f8d3a8c6408ef595ab08bff21628587e2a1", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "isApprovedForAll", - "source_mapping": { - "start": 861, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 112, - "length": 829, - "filename_relative": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "isApprovedForAll(address,address)" - } - } - ], - "description": "Token (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#15)\n", - "markdown": "[Token](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.isApprovedForAll(address,address)](tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L15)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16", - "id": "fa9985c505689f9a45d1ac51e1dd8cf79eeb2c939946abfb5ac78f46e692d0eb", - "check": "erc721-interface", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol.0.4.25.MissingEventsAccessControl.json b/tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol.0.4.25.MissingEventsAccessControl.json deleted file mode 100644 index 7e2926648..000000000 --- a/tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol.0.4.25.MissingEventsAccessControl.json +++ /dev/null @@ -1,636 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 458, - "length": 127, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2(address)" - } - }, - { - "type": "node", - "name": "owner = newOwner", - "source_mapping": { - "start": 552, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 458, - "length": 127, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2(address)" - } - } - } - } - ], - "description": "Bug.bad2(address) (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#23-26) should emit an event for: \n\t- owner = newOwner (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#25) \n", - "markdown": "[Bug.bad2(address)](tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#L23-L26) should emit an event for: \n\t- [owner = newOwner](tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#L25) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#L23-L26", - "id": "a9ba964c9c3b9d0185a7a83e1b08344a3436840fa876a62a91faef642a933bd0", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 284, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "owner = msg.sender", - "source_mapping": { - "start": 325, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 284, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "Bug.bad0() (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#15-17) should emit an event for: \n\t- owner = msg.sender (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#16) \n", - "markdown": "[Bug.bad0()](tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#L15-L17) should emit an event for: \n\t- [owner = msg.sender](tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#L16) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#L15-L17", - "id": "eb44ec9bf0c6724f7950c6dcd8af84ce3d66025526c55a3691445259f59bfc24", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 364, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "owner = newOwner", - "source_mapping": { - "start": 421, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 364, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - } - } - ], - "description": "Bug.bad1(address) (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#19-21) should emit an event for: \n\t- owner = newOwner (tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#20) \n", - "markdown": "[Bug.bad1(address)](tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#L19-L21) should emit an event for: \n\t- [owner = newOwner](tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#L20) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.4.25/missing_events_access_control.sol#L19-L21", - "id": "ff8f7c2d6001e5900dded86071a174d8a71c0078a961951a0694c50460d5bd2f", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol.0.5.16.MissingEventsAccessControl.json b/tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol.0.5.16.MissingEventsAccessControl.json deleted file mode 100644 index 3341d0ab9..000000000 --- a/tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol.0.5.16.MissingEventsAccessControl.json +++ /dev/null @@ -1,636 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 364, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "owner = newOwner", - "source_mapping": { - "start": 421, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 364, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - } - } - ], - "description": "Bug.bad1(address) (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#19-21) should emit an event for: \n\t- owner = newOwner (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#20) \n", - "markdown": "[Bug.bad1(address)](tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#L19-L21) should emit an event for: \n\t- [owner = newOwner](tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#L20) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#L19-L21", - "id": "2adc5f8e781cdaaf63f6d48774301e6faebdbc57270ac6e58b9f2c8042d579c9", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 284, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "owner = msg.sender", - "source_mapping": { - "start": 325, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 284, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "Bug.bad0() (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#15-17) should emit an event for: \n\t- owner = msg.sender (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#16) \n", - "markdown": "[Bug.bad0()](tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#L15-L17) should emit an event for: \n\t- [owner = msg.sender](tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#L16) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#L15-L17", - "id": "3bcd44f3743829d2b06e08c66536a2b284ed15a6de47054be6878f6695462394", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 458, - "length": 127, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2(address)" - } - }, - { - "type": "node", - "name": "owner = newOwner", - "source_mapping": { - "start": 552, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 458, - "length": 127, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2(address)" - } - } - } - } - ], - "description": "Bug.bad2(address) (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#23-26) should emit an event for: \n\t- owner = newOwner (tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#25) \n", - "markdown": "[Bug.bad2(address)](tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#L23-L26) should emit an event for: \n\t- [owner = newOwner](tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#L25) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.5.16/missing_events_access_control.sol#L23-L26", - "id": "b2b17502036e90b5febb512ef8147dd1a1220909459522c3551a323e74008aeb", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol.0.6.11.MissingEventsAccessControl.json b/tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol.0.6.11.MissingEventsAccessControl.json deleted file mode 100644 index a06c7fbbe..000000000 --- a/tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol.0.6.11.MissingEventsAccessControl.json +++ /dev/null @@ -1,636 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 458, - "length": 127, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2(address)" - } - }, - { - "type": "node", - "name": "owner = newOwner", - "source_mapping": { - "start": 552, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 458, - "length": 127, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2(address)" - } - } - } - } - ], - "description": "Bug.bad2(address) (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#23-26) should emit an event for: \n\t- owner = newOwner (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#25) \n", - "markdown": "[Bug.bad2(address)](tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#L23-L26) should emit an event for: \n\t- [owner = newOwner](tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#L25) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#L23-L26", - "id": "07b828b3ef90ce17c16627d50b5d10d3d0bb12364186c1daf539fe754e044e9d", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 364, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "owner = newOwner", - "source_mapping": { - "start": 421, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 364, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - } - } - ], - "description": "Bug.bad1(address) (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#19-21) should emit an event for: \n\t- owner = newOwner (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#20) \n", - "markdown": "[Bug.bad1(address)](tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#L19-L21) should emit an event for: \n\t- [owner = newOwner](tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#L20) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#L19-L21", - "id": "2a1bc700ba646491b242b50ce15549c686f18158317505cc73e49819c13f30ff", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 284, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "owner = msg.sender", - "source_mapping": { - "start": 325, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 284, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "Bug.bad0() (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#15-17) should emit an event for: \n\t- owner = msg.sender (tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#16) \n", - "markdown": "[Bug.bad0()](tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#L15-L17) should emit an event for: \n\t- [owner = msg.sender](tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#L16) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.6.11/missing_events_access_control.sol#L15-L17", - "id": "6233b8ac6fbfc75896df1f4181adc2b672d947841a32a5e600331f6e3fae0ad7", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol.0.7.6.MissingEventsAccessControl.json b/tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol.0.7.6.MissingEventsAccessControl.json deleted file mode 100644 index 1d2ff91e4..000000000 --- a/tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol.0.7.6.MissingEventsAccessControl.json +++ /dev/null @@ -1,636 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 364, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "owner = newOwner", - "source_mapping": { - "start": 421, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 364, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - } - } - ], - "description": "Bug.bad1(address) (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#19-21) should emit an event for: \n\t- owner = newOwner (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#20) \n", - "markdown": "[Bug.bad1(address)](tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#L19-L21) should emit an event for: \n\t- [owner = newOwner](tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#L20) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#L19-L21", - "id": "21fc5036d7faf8a85ef526dae53f05bb95d3b164be9153309914c9d1edd4b1fa", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 284, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "owner = msg.sender", - "source_mapping": { - "start": 325, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 284, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "Bug.bad0() (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#15-17) should emit an event for: \n\t- owner = msg.sender (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#16) \n", - "markdown": "[Bug.bad0()](tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#L15-L17) should emit an event for: \n\t- [owner = msg.sender](tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#L16) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#L15-L17", - "id": "60cac8612da706a8f41d365ee5121e3ff3d117d62ef30542f4f0919c1269cc63", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 458, - "length": 127, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2(address)" - } - }, - { - "type": "node", - "name": "owner = newOwner", - "source_mapping": { - "start": 552, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 458, - "length": 127, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1309, - "filename_relative": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2(address)" - } - } - } - } - ], - "description": "Bug.bad2(address) (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#23-26) should emit an event for: \n\t- owner = newOwner (tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#25) \n", - "markdown": "[Bug.bad2(address)](tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#L23-L26) should emit an event for: \n\t- [owner = newOwner](tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#L25) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-access/0.7.6/missing_events_access_control.sol#L23-L26", - "id": "7860dfd180581f63b5ecadd5b878a8e35424a20a1ed7bdfa9c7a88bbe40a40ac", - "check": "events-access", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol.0.4.25.MissingEventsArithmetic.json b/tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol.0.4.25.MissingEventsArithmetic.json deleted file mode 100644 index e0cb12afe..000000000 --- a/tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol.0.4.25.MissingEventsArithmetic.json +++ /dev/null @@ -1,504 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 535, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(int16)" - } - }, - { - "type": "node", - "name": "iprice16 = _price", - "source_mapping": { - "start": 585, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 535, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(int16)" - } - } - } - } - ], - "description": "Bug.bad1(int16) (tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#30-32) should emit an event for: \n\t- iprice16 = _price (tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#31) \n", - "markdown": "[Bug.bad1(int16)](tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#L30-L32) should emit an event for: \n\t- [iprice16 = _price](tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#L31) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#L30-L32", - "id": "7d5d220e7eb70eecd77a3b9f97edae023ff0ace74cb8fdcc673421a20cd1b0bd", - "check": "events-maths", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 392, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(uint8)" - } - }, - { - "type": "node", - "name": "uprice8 = _price", - "source_mapping": { - "start": 442, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 392, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(uint8)" - } - } - } - } - ], - "description": "Bug.bad0(uint8) (tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#22-24) should emit an event for: \n\t- uprice8 = _price (tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#23) \n", - "markdown": "[Bug.bad0(uint8)](tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#L22-L24) should emit an event for: \n\t- [uprice8 = _price](tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#L23) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-maths/0.4.25/missing_events_arithmetic.sol#L22-L24", - "id": "d834b257539b629a79f990d9afdbdea9b092e4539613b94120157bec163e9570", - "check": "events-maths", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol.0.5.16.MissingEventsArithmetic.json b/tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol.0.5.16.MissingEventsArithmetic.json deleted file mode 100644 index 1f7a2d8a7..000000000 --- a/tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol.0.5.16.MissingEventsArithmetic.json +++ /dev/null @@ -1,504 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 535, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(int16)" - } - }, - { - "type": "node", - "name": "iprice16 = _price", - "source_mapping": { - "start": 585, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 535, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(int16)" - } - } - } - } - ], - "description": "Bug.bad1(int16) (tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#30-32) should emit an event for: \n\t- iprice16 = _price (tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#31) \n", - "markdown": "[Bug.bad1(int16)](tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#L30-L32) should emit an event for: \n\t- [iprice16 = _price](tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#L31) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#L30-L32", - "id": "384e7002e5c0ea33a22d703483b9f837a9ca785cc5b13b911a90fcd094d6a53b", - "check": "events-maths", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 392, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(uint8)" - } - }, - { - "type": "node", - "name": "uprice8 = _price", - "source_mapping": { - "start": 442, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 392, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(uint8)" - } - } - } - } - ], - "description": "Bug.bad0(uint8) (tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#22-24) should emit an event for: \n\t- uprice8 = _price (tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#23) \n", - "markdown": "[Bug.bad0(uint8)](tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#L22-L24) should emit an event for: \n\t- [uprice8 = _price](tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#L23) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-maths/0.5.16/missing_events_arithmetic.sol#L22-L24", - "id": "ecfe9683975ad7762734d6bb9363346cd16bb866d217bbc4e3b340796739ac88", - "check": "events-maths", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol.0.6.11.MissingEventsArithmetic.json b/tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol.0.6.11.MissingEventsArithmetic.json deleted file mode 100644 index 841323847..000000000 --- a/tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol.0.6.11.MissingEventsArithmetic.json +++ /dev/null @@ -1,504 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 392, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(uint8)" - } - }, - { - "type": "node", - "name": "uprice8 = _price", - "source_mapping": { - "start": 442, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 392, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(uint8)" - } - } - } - } - ], - "description": "Bug.bad0(uint8) (tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#22-24) should emit an event for: \n\t- uprice8 = _price (tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#23) \n", - "markdown": "[Bug.bad0(uint8)](tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#L22-L24) should emit an event for: \n\t- [uprice8 = _price](tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#L23) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#L22-L24", - "id": "4bf2270c516407112555696f464caa30d4e2e7898bd1479e454016615a38ad24", - "check": "events-maths", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 535, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(int16)" - } - }, - { - "type": "node", - "name": "iprice16 = _price", - "source_mapping": { - "start": 585, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 535, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(int16)" - } - } - } - } - ], - "description": "Bug.bad1(int16) (tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#30-32) should emit an event for: \n\t- iprice16 = _price (tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#31) \n", - "markdown": "[Bug.bad1(int16)](tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#L30-L32) should emit an event for: \n\t- [iprice16 = _price](tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#L31) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-maths/0.6.11/missing_events_arithmetic.sol#L30-L32", - "id": "9fc6945144a499e74e24fc81440c43f9d2266b2b656d6444d05cd3aeb9d6325a", - "check": "events-maths", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol.0.7.6.MissingEventsArithmetic.json b/tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol.0.7.6.MissingEventsArithmetic.json deleted file mode 100644 index dd299c72a..000000000 --- a/tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol.0.7.6.MissingEventsArithmetic.json +++ /dev/null @@ -1,504 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 535, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(int16)" - } - }, - { - "type": "node", - "name": "iprice16 = _price", - "source_mapping": { - "start": 585, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 535, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(int16)" - } - } - } - } - ], - "description": "Bug.bad1(int16) (tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#30-32) should emit an event for: \n\t- iprice16 = _price (tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#31) \n", - "markdown": "[Bug.bad1(int16)](tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#L30-L32) should emit an event for: \n\t- [iprice16 = _price](tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#L31) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#L30-L32", - "id": "9a015bded24bf836777fe364f7fda7e10969446ce8c0b352ce6e0023bdd7b79b", - "check": "events-maths", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 392, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(uint8)" - } - }, - { - "type": "node", - "name": "uprice8 = _price", - "source_mapping": { - "start": 442, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 392, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 0, - "length": 1522, - "filename_relative": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(uint8)" - } - } - } - } - ], - "description": "Bug.bad0(uint8) (tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#22-24) should emit an event for: \n\t- uprice8 = _price (tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#23) \n", - "markdown": "[Bug.bad0(uint8)](tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#L22-L24) should emit an event for: \n\t- [uprice8 = _price](tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#L23) \n", - "first_markdown_element": "tests/e2e/detectors/test_data/events-maths/0.7.6/missing_events_arithmetic.sol#L22-L24", - "id": "fa31b12742b283eaebe95c21d70eb91600f87abda7eb2a186d0a661ab401992a", - "check": "events-maths", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.4.25/external_function.sol.0.4.25.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.4.25/external_function.sol.0.4.25.ExternalFunction.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.4.25/external_function.sol.0.4.25.ExternalFunction.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.4.25/external_function_2.sol.0.4.25.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.4.25/external_function_2.sol.0.4.25.ExternalFunction.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.4.25/external_function_2.sol.0.4.25.ExternalFunction.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol.0.4.25.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol.0.4.25.ExternalFunction.json deleted file mode 100644 index 5931ffb80..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol.0.4.25.ExternalFunction.json +++ /dev/null @@ -1,181 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 239, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 330, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(uint256[])" - } - } - ], - "description": "bad2(uint256[]) should be declared external:\n\t- Test.bad2(uint256[]) (tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#8)\n", - "markdown": "bad2(uint256[]) should be declared external:\n\t- [Test.bad2(uint256[])](tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#L8", - "id": "69068a3072d6f392073d197438688ae8e0bee7844098cfe4cc6c7d345e603678", - "check": "external-function", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 196, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 330, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(bytes)" - } - } - ], - "description": "bad(bytes) should be declared external:\n\t- Test.bad(bytes) (tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#7)\n", - "markdown": "bad(bytes) should be declared external:\n\t- [Test.bad(bytes)](tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#L7", - "id": "695915ec89adb6bfc4bf7f8eebf7993e02756da20f0b0e5a8d1dd251bf956c43", - "check": "external-function", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 287, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 330, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(string)" - } - } - ], - "description": "bad3(string) should be declared external:\n\t- Test.bad3(string) (tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#9)\n", - "markdown": "bad3(string) should be declared external:\n\t- [Test.bad3(string)](tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/external-function/0.4.25/external_function_3.sol#L9", - "id": "f56b73c72461d3d9fd4e79bd3cd2649f79c425406843e5c7b2de3fad5b2f663a", - "check": "external-function", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.5.16/external_function.sol.0.5.16.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.5.16/external_function.sol.0.5.16.ExternalFunction.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.5.16/external_function.sol.0.5.16.ExternalFunction.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.5.16/external_function_2.sol.0.5.16.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.5.16/external_function_2.sol.0.5.16.ExternalFunction.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.5.16/external_function_2.sol.0.5.16.ExternalFunction.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol.0.5.16.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol.0.5.16.ExternalFunction.json deleted file mode 100644 index 72a50312d..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol.0.5.16.ExternalFunction.json +++ /dev/null @@ -1,268 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 524, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 5, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 35, - "length": 532, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(string)" - } - } - ], - "description": "bad4(string) should be declared external:\n\t- Test.bad4(string) (tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#18)\nMoreover, the following function parameters should change its data location:\nx location should be calldata\n", - "markdown": "bad4(string) should be declared external:\n\t- [Test.bad4(string)](tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#L18)\nMoreover, the following function parameters should change its data location:\nx location should be calldata\n", - "first_markdown_element": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#L18", - "id": "1b6de528ed7f8ecf61a543879c8bcbee1bce7e08bdef89c6f8f663937d5a7209", - "check": "external-function", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 475, - "length": 44, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 35, - "length": 532, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(Test.testStruct)" - } - } - ], - "description": "bad3(Test.testStruct) should be declared external:\n\t- Test.bad3(Test.testStruct) (tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#17)\nMoreover, the following function parameters should change its data location:\nx location should be calldata\n", - "markdown": "bad3(Test.testStruct) should be declared external:\n\t- [Test.bad3(Test.testStruct)](tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#L17)\nMoreover, the following function parameters should change its data location:\nx location should be calldata\n", - "first_markdown_element": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#L17", - "id": "a60742b3998c52eee654f61cfb5b39834d63a1b13212511a01811206ac445dd5", - "check": "external-function", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 427, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 35, - "length": 532, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(uint256[])" - } - } - ], - "description": "bad2(uint256[]) should be declared external:\n\t- Test.bad2(uint256[]) (tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#16)\nMoreover, the following function parameters should change its data location:\nx location should be calldata\n", - "markdown": "bad2(uint256[]) should be declared external:\n\t- [Test.bad2(uint256[])](tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#L16)\nMoreover, the following function parameters should change its data location:\nx location should be calldata\n", - "first_markdown_element": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#L16", - "id": "aa4b0cae64f1a6f9f11d3f9981255fd04f37f558c960195ee46413ca4b142822", - "check": "external-function", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 384, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 35, - "length": 532, - "filename_relative": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(bytes)" - } - } - ], - "description": "bad(bytes) should be declared external:\n\t- Test.bad(bytes) (tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#15)\nMoreover, the following function parameters should change its data location:\nx location should be calldata\n", - "markdown": "bad(bytes) should be declared external:\n\t- [Test.bad(bytes)](tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#L15)\nMoreover, the following function parameters should change its data location:\nx location should be calldata\n", - "first_markdown_element": "tests/e2e/detectors/test_data/external-function/0.5.16/external_function_3.sol#L15", - "id": "df1688f3d1120f9600f61accff294ba821689c45dc261f1a9b94f23e6a402367", - "check": "external-function", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.6.11/external_function.sol.0.6.11.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.6.11/external_function.sol.0.6.11.ExternalFunction.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.6.11/external_function.sol.0.6.11.ExternalFunction.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.6.11/external_function_2.sol.0.6.11.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.6.11/external_function_2.sol.0.6.11.ExternalFunction.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.6.11/external_function_2.sol.0.6.11.ExternalFunction.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.6.11/external_function_3.sol.0.6.11.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.6.11/external_function_3.sol.0.6.11.ExternalFunction.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.6.11/external_function_3.sol.0.6.11.ExternalFunction.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.7.6/external_function.sol.0.7.6.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.7.6/external_function.sol.0.7.6.ExternalFunction.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.7.6/external_function.sol.0.7.6.ExternalFunction.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.7.6/external_function_2.sol.0.7.6.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.7.6/external_function_2.sol.0.7.6.ExternalFunction.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.7.6/external_function_2.sol.0.7.6.ExternalFunction.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/external-function/0.7.6/external_function_3.sol.0.7.6.ExternalFunction.json b/tests/e2e/detectors/test_data/external-function/0.7.6/external_function_3.sol.0.7.6.ExternalFunction.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/external-function/0.7.6/external_function_3.sol.0.7.6.ExternalFunction.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol.0.4.25.FunctionInitializedState.json b/tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol.0.4.25.FunctionInitializedState.json deleted file mode 100644 index 4a3e17170..000000000 --- a/tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol.0.4.25.FunctionInitializedState.json +++ /dev/null @@ -1,459 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 157, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1567, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.v (tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "markdown": "[StateVarInitFromFunction.v](tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#L5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#L5", - "id": "4b87ea4c0a3b72be79ffde12c56c9dc7440445b79ff4b228e0937b3a05540e4b", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "z4", - "source_mapping": { - "start": 842, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1567, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.z4 (tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n", - "markdown": "[StateVarInitFromFunction.z4](tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#L17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#L17", - "id": "8b7eb9ab16397c2f23479d2c3043a675ab5e2b1da07e2697631812d6d7b68525", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 268, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1567, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.x (tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "markdown": "[StateVarInitFromFunction.x](tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#L7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#L7", - "id": "adfa394934c8669a556cfa10c364fe526dd1e295a63959e1e88fe84a919ef354", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y1", - "source_mapping": { - "start": 357, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1567, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.y1 (tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n", - "markdown": "[StateVarInitFromFunction.y1](tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#L9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#L9", - "id": "b26f83c06e9aca87637dea02a0f4080fd4226c1ed90c6c2c63da85cb142d67ab", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y2", - "source_mapping": { - "start": 453, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 5, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1567, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.y2 (tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n", - "markdown": "[StateVarInitFromFunction.y2](tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#L10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.4.25/function_init_state_variables.sol#L10", - "id": "b6e231b9b735794e00b73dddb86b2ba8f7a738d916c99f302fb32b1095c67472", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol.0.5.16.FunctionInitializedState.json b/tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol.0.5.16.FunctionInitializedState.json deleted file mode 100644 index 8c104cf5f..000000000 --- a/tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol.0.5.16.FunctionInitializedState.json +++ /dev/null @@ -1,459 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 157, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1575, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.v (tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "markdown": "[StateVarInitFromFunction.v](tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#L5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#L5", - "id": "4b87ea4c0a3b72be79ffde12c56c9dc7440445b79ff4b228e0937b3a05540e4b", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "z4", - "source_mapping": { - "start": 842, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1575, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.z4 (tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n", - "markdown": "[StateVarInitFromFunction.z4](tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#L17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#L17", - "id": "8b7eb9ab16397c2f23479d2c3043a675ab5e2b1da07e2697631812d6d7b68525", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 268, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1575, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.x (tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "markdown": "[StateVarInitFromFunction.x](tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#L7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#L7", - "id": "adfa394934c8669a556cfa10c364fe526dd1e295a63959e1e88fe84a919ef354", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y1", - "source_mapping": { - "start": 357, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1575, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.y1 (tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n", - "markdown": "[StateVarInitFromFunction.y1](tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#L9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#L9", - "id": "b26f83c06e9aca87637dea02a0f4080fd4226c1ed90c6c2c63da85cb142d67ab", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y2", - "source_mapping": { - "start": 453, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 5, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1575, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.y2 (tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n", - "markdown": "[StateVarInitFromFunction.y2](tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#L10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.5.16/function_init_state_variables.sol#L10", - "id": "b6e231b9b735794e00b73dddb86b2ba8f7a738d916c99f302fb32b1095c67472", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol.0.6.11.FunctionInitializedState.json b/tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol.0.6.11.FunctionInitializedState.json deleted file mode 100644 index a974a1f73..000000000 --- a/tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol.0.6.11.FunctionInitializedState.json +++ /dev/null @@ -1,459 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 157, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1575, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.v (tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "markdown": "[StateVarInitFromFunction.v](tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#L5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#L5", - "id": "4b87ea4c0a3b72be79ffde12c56c9dc7440445b79ff4b228e0937b3a05540e4b", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "z4", - "source_mapping": { - "start": 842, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1575, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.z4 (tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n", - "markdown": "[StateVarInitFromFunction.z4](tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#L17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#L17", - "id": "8b7eb9ab16397c2f23479d2c3043a675ab5e2b1da07e2697631812d6d7b68525", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 268, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1575, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.x (tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "markdown": "[StateVarInitFromFunction.x](tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#L7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#L7", - "id": "adfa394934c8669a556cfa10c364fe526dd1e295a63959e1e88fe84a919ef354", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y1", - "source_mapping": { - "start": 357, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1575, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.y1 (tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n", - "markdown": "[StateVarInitFromFunction.y1](tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#L9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#L9", - "id": "b26f83c06e9aca87637dea02a0f4080fd4226c1ed90c6c2c63da85cb142d67ab", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y2", - "source_mapping": { - "start": 453, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 5, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1575, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.y2 (tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n", - "markdown": "[StateVarInitFromFunction.y2](tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#L10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.6.11/function_init_state_variables.sol#L10", - "id": "b6e231b9b735794e00b73dddb86b2ba8f7a738d916c99f302fb32b1095c67472", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol.0.7.6.FunctionInitializedState.json b/tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol.0.7.6.FunctionInitializedState.json deleted file mode 100644 index 49d2b74ef..000000000 --- a/tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol.0.7.6.FunctionInitializedState.json +++ /dev/null @@ -1,459 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 157, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1567, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.v (tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "markdown": "[StateVarInitFromFunction.v](tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#L5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#L5", - "id": "4b87ea4c0a3b72be79ffde12c56c9dc7440445b79ff4b228e0937b3a05540e4b", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "z4", - "source_mapping": { - "start": 842, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1567, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.z4 (tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n", - "markdown": "[StateVarInitFromFunction.z4](tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#L17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#L17", - "id": "8b7eb9ab16397c2f23479d2c3043a675ab5e2b1da07e2697631812d6d7b68525", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 268, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1567, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.x (tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "markdown": "[StateVarInitFromFunction.x](tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#L7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#L7", - "id": "adfa394934c8669a556cfa10c364fe526dd1e295a63959e1e88fe84a919ef354", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y1", - "source_mapping": { - "start": 357, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1567, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.y1 (tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n", - "markdown": "[StateVarInitFromFunction.y1](tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#L9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#L9", - "id": "b26f83c06e9aca87637dea02a0f4080fd4226c1ed90c6c2c63da85cb142d67ab", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y2", - "source_mapping": { - "start": 453, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 5, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "StateVarInitFromFunction", - "source_mapping": { - "start": 116, - "length": 1567, - "filename_relative": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "StateVarInitFromFunction.y2 (tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n", - "markdown": "[StateVarInitFromFunction.y2](tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#L10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n", - "first_markdown_element": "tests/e2e/detectors/test_data/function-init-state/0.7.6/function_init_state_variables.sol#L10", - "id": "b6e231b9b735794e00b73dddb86b2ba8f7a738d916c99f302fb32b1095c67472", - "check": "function-init-state", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/immutable-states/0.4.25/immut_state_variables.sol.0.4.25.CouldBeImmutable.json b/tests/e2e/detectors/test_data/immutable-states/0.4.25/immut_state_variables.sol.0.4.25.CouldBeImmutable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/immutable-states/0.4.25/immut_state_variables.sol.0.4.25.CouldBeImmutable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/immutable-states/0.5.16/immut_state_variables.sol.0.5.16.CouldBeImmutable.json b/tests/e2e/detectors/test_data/immutable-states/0.5.16/immut_state_variables.sol.0.5.16.CouldBeImmutable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/immutable-states/0.5.16/immut_state_variables.sol.0.5.16.CouldBeImmutable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol.0.6.11.CouldBeImmutable.json b/tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol.0.6.11.CouldBeImmutable.json deleted file mode 100644 index 3c2d2fe8a..000000000 --- a/tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol.0.6.11.CouldBeImmutable.json +++ /dev/null @@ -1,339 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_5", - "source_mapping": { - "start": 1077, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 47 - ], - "starting_column": 5, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 539, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_5 (tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#47) should be immutable \n", - "markdown": "[Bad.should_be_immutable_5](tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#L47) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#L47", - "id": "42d50245236163ceca90dea732165e65c2155934b149a5a1a5c51bddc0b5b02a", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_2", - "source_mapping": { - "start": 940, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 44 - ], - "starting_column": 5, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 539, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_2 (tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#44) should be immutable \n", - "markdown": "[Bad.should_be_immutable_2](tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#L44) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#L44", - "id": "70d57aa51dda92c28444a466db8567fa783c85d484259aa5eee2ebc63f97a200", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_4", - "source_mapping": { - "start": 1038, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 5, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 539, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_4 (tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#46) should be immutable \n", - "markdown": "[Bad.should_be_immutable_4](tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#L46) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#L46", - "id": "a26d6df4087ac010928bc4bd18aa70ac58a28e584b1288e348d9c255473c300d", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable", - "source_mapping": { - "start": 894, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 5, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 539, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable (tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#43) should be immutable \n", - "markdown": "[Bad.should_be_immutable](tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#L43) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#L43", - "id": "b163d277f544f7f05ed4bcddda61e444be893e65ba0469688abd7b401a1db222", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_3", - "source_mapping": { - "start": 986, - "length": 46, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 45 - ], - "starting_column": 5, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 539, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_3 (tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#45) should be immutable \n", - "markdown": "[Bad.should_be_immutable_3](tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#L45) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.6.11/immut_state_variables.sol#L45", - "id": "f19f7a22a6f17ffd8b5c29021226388aab7548f996b686a8e0b2bc861f72d447", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol.0.7.6.CouldBeImmutable.json b/tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol.0.7.6.CouldBeImmutable.json deleted file mode 100644 index 11cfe3e5e..000000000 --- a/tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol.0.7.6.CouldBeImmutable.json +++ /dev/null @@ -1,334 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_5", - "source_mapping": { - "start": 1077, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 47 - ], - "starting_column": 5, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 531, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_5 (tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#47) should be immutable \n", - "markdown": "[Bad.should_be_immutable_5](tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#L47) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#L47", - "id": "42d50245236163ceca90dea732165e65c2155934b149a5a1a5c51bddc0b5b02a", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_2", - "source_mapping": { - "start": 940, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 44 - ], - "starting_column": 5, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 531, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_2 (tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#44) should be immutable \n", - "markdown": "[Bad.should_be_immutable_2](tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#L44) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#L44", - "id": "70d57aa51dda92c28444a466db8567fa783c85d484259aa5eee2ebc63f97a200", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_4", - "source_mapping": { - "start": 1038, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 5, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 531, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_4 (tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#46) should be immutable \n", - "markdown": "[Bad.should_be_immutable_4](tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#L46) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#L46", - "id": "a26d6df4087ac010928bc4bd18aa70ac58a28e584b1288e348d9c255473c300d", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable", - "source_mapping": { - "start": 894, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 5, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 531, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable (tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#43) should be immutable \n", - "markdown": "[Bad.should_be_immutable](tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#L43) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#L43", - "id": "b163d277f544f7f05ed4bcddda61e444be893e65ba0469688abd7b401a1db222", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_3", - "source_mapping": { - "start": 986, - "length": 46, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 45 - ], - "starting_column": 5, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 531, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_3 (tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#45) should be immutable \n", - "markdown": "[Bad.should_be_immutable_3](tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#L45) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.7.6/immut_state_variables.sol#L45", - "id": "f19f7a22a6f17ffd8b5c29021226388aab7548f996b686a8e0b2bc861f72d447", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol.0.8.0.CouldBeImmutable.json b/tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol.0.8.0.CouldBeImmutable.json deleted file mode 100644 index 31fd3b1be..000000000 --- a/tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol.0.8.0.CouldBeImmutable.json +++ /dev/null @@ -1,276 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_5", - "source_mapping": { - "start": 1038, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 46 - ], - "starting_column": 5, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 577, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_5 (tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#46) should be immutable \n", - "markdown": "[Bad.should_be_immutable_5](tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#L46) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#L46", - "id": "42d50245236163ceca90dea732165e65c2155934b149a5a1a5c51bddc0b5b02a", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_2", - "source_mapping": { - "start": 940, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 44 - ], - "starting_column": 5, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 577, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_2 (tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#44) should be immutable \n", - "markdown": "[Bad.should_be_immutable_2](tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#L44) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#L44", - "id": "70d57aa51dda92c28444a466db8567fa783c85d484259aa5eee2ebc63f97a200", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable", - "source_mapping": { - "start": 894, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 5, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 577, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable (tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#43) should be immutable \n", - "markdown": "[Bad.should_be_immutable](tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#L43) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#L43", - "id": "b163d277f544f7f05ed4bcddda61e444be893e65ba0469688abd7b401a1db222", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "should_be_immutable_3", - "source_mapping": { - "start": 986, - "length": 46, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 45 - ], - "starting_column": 5, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bad", - "source_mapping": { - "start": 718, - "length": 577, - "filename_relative": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bad.should_be_immutable_3 (tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#45) should be immutable \n", - "markdown": "[Bad.should_be_immutable_3](tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#L45) should be immutable \n", - "first_markdown_element": "tests/e2e/detectors/test_data/immutable-states/0.8.0/immut_state_variables.sol#L45", - "id": "f19f7a22a6f17ffd8b5c29021226388aab7548f996b686a8e0b2bc861f72d447", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol.0.4.25.IncorrectStrictEquality.json b/tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol.0.4.25.IncorrectStrictEquality.json deleted file mode 100644 index fcf5e67b7..000000000 --- a/tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol.0.4.25.IncorrectStrictEquality.json +++ /dev/null @@ -1,2552 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1056, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "require(bool)(10000000000000000000 == address(this).balance)", - "source_mapping": { - "start": 1091, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1056, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "TestContractBalance.bad3() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#47-50) uses a dangerous strict equality:\n\t- require(bool)(10000000000000000000 == address(this).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#48)\n", - "markdown": "[TestContractBalance.bad3()](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L47-L50) uses a dangerous strict equality:\n\t- [require(bool)(10000000000000000000 == address(this).balance)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L48)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L47-L50", - "id": "123f37fe2d18f3d62f0c6ce71dbefc3034de268bf8c16054a306ecb3e36ad065", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 787, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(10000000000000000000 == address(address(this)).balance)", - "source_mapping": { - "start": 822, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 38 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 787, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "TestContractBalance.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#37-40) uses a dangerous strict equality:\n\t- require(bool)(10000000000000000000 == address(address(this)).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#38)\n", - "markdown": "[TestContractBalance.bad1()](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L37-L40) uses a dangerous strict equality:\n\t- [require(bool)(10000000000000000000 == address(address(this)).balance)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L38)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L37-L40", - "id": "33dd2bddb09b7d20544ca585d3adae4f9228b100250216d0c7864a8076898bbd", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 511, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 165, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(ERC20Variable)" - } - }, - { - "type": "node", - "name": "require(bool)(erc.balanceOf(msg.sender) == 10)", - "source_mapping": { - "start": 562, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 511, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 165, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(ERC20Variable)" - } - } - } - } - ], - "description": "ERC20TestBalance.bad1(ERC20Variable) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#25-27) uses a dangerous strict equality:\n\t- require(bool)(erc.balanceOf(msg.sender) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#26)\n", - "markdown": "[ERC20TestBalance.bad1(ERC20Variable)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L25-L27) uses a dangerous strict equality:\n\t- [require(bool)(erc.balanceOf(msg.sender) == 10)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L25-L27", - "id": "4a9b012b6f9762d5edbdfd01c8160a88c6df6773229601c6d55d90b7c7aa2cdd", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 2935, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 123, - 124, - 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(now == 0)", - "source_mapping": { - "start": 2969, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 124 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 2935, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 123, - 124, - 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#123-125) uses a dangerous strict equality:\n\t- require(bool)(now == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#124)\n", - "markdown": "[TestSolidityKeyword.bad0()](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L123-L125) uses a dangerous strict equality:\n\t- [require(bool)(now == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L124)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L123-L125", - "id": "5fcec0bbb23ad1151dc4a805c21795e3dad5e7863008cb2efd460998b23b60d1", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1186, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - }, - { - "type": "node", - "name": "balance == 10000000000000000000", - "source_mapping": { - "start": 1274, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 54 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1186, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - } - } - } - ], - "description": "TestContractBalance.bad4() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#52-57) uses a dangerous strict equality:\n\t- balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#54)\n", - "markdown": "[TestContractBalance.bad4()](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L52-L57) uses a dangerous strict equality:\n\t- [balance == 10000000000000000000](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L54)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L52-L57", - "id": "7a6e65373ac0889b26f7464107e30ff847c4db7fe43999ada2631f51625c46ae", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 404, - "length": 101, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 165, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(ERC20Function)" - } - }, - { - "type": "node", - "name": "require(bool)(erc.balanceOf(address(this)) == 10)", - "source_mapping": { - "start": 455, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 404, - "length": 101, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 165, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(ERC20Function)" - } - } - } - } - ], - "description": "ERC20TestBalance.bad0(ERC20Function) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#21-23) uses a dangerous strict equality:\n\t- require(bool)(erc.balanceOf(address(this)) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#22)\n", - "markdown": "[ERC20TestBalance.bad0(ERC20Function)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L21-L23) uses a dangerous strict equality:\n\t- [require(bool)(erc.balanceOf(address(this)) == 10)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L21-L23", - "id": "8bdd45363c31403d82b020ba5823c89c6bc3a54c1b96f718fdb5d9d218a675ac", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 3000, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(block.number == 0)", - "source_mapping": { - "start": 3034, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 128 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 3000, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#127-129) uses a dangerous strict equality:\n\t- require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#128)\n", - "markdown": "[TestSolidityKeyword.bad1()](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L127-L129) uses a dangerous strict equality:\n\t- [require(bool)(block.number == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L128)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L127-L129", - "id": "8d31f3e01926106c2993f7184e5f73efd00cac620fa4143531eec830e143137d", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 648, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(address(address(this)).balance == 10000000000000000000)", - "source_mapping": { - "start": 683, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 648, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "TestContractBalance.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#32-35) uses a dangerous strict equality:\n\t- require(bool)(address(address(this)).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#33)\n", - "markdown": "[TestContractBalance.bad0()](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L32-L35) uses a dangerous strict equality:\n\t- [require(bool)(address(address(this)).balance == 10000000000000000000)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L33)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L32-L35", - "id": "90e38f3c11943fb117be8c79d5c12196aab5990503f859c8e133d5318e2f5c78", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1362, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - }, - { - "type": "node", - "name": "10000000000000000000 == balance", - "source_mapping": { - "start": 1450, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1362, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - } - } - } - ], - "description": "TestContractBalance.bad5() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#59-64) uses a dangerous strict equality:\n\t- 10000000000000000000 == balance (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#61)\n", - "markdown": "[TestContractBalance.bad5()](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L59-L64) uses a dangerous strict equality:\n\t- [10000000000000000000 == balance](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L61)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L59-L64", - "id": "99779d65b3b4cea385aa65b1e7bed533bd5301aa04e141c7a38125b32804e736", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad6", - "source_mapping": { - "start": 1538, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad6()" - } - }, - { - "type": "node", - "name": "balance == 10000000000000000000", - "source_mapping": { - "start": 1635, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad6", - "source_mapping": { - "start": 1538, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad6()" - } - } - } - } - ], - "description": "TestContractBalance.bad6() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#66-71) uses a dangerous strict equality:\n\t- balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#68)\n", - "markdown": "[TestContractBalance.bad6()](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L66-L71) uses a dangerous strict equality:\n\t- [balance == 10000000000000000000](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L68)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L66-L71", - "id": "aef2defcd860257b102e1e07583b2bcd8eb96186e0334d26289d62ef66d94265", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 3072, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 131, - 132, - 133 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "require(bool)(block.number == 0)", - "source_mapping": { - "start": 3106, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 132 - ], - "starting_column": 9, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 3072, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 131, - 132, - 133 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#131-133) uses a dangerous strict equality:\n\t- require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#132)\n", - "markdown": "[TestSolidityKeyword.bad2()](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L131-L133) uses a dangerous strict equality:\n\t- [require(bool)(block.number == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L132)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L131-L133", - "id": "be3fc04691f9a4b06c55b3c98a3968c3e0f03bbaf0fd6fe799aba4487b54ac0e", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 926, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "require(bool)(address(this).balance == 10000000000000000000)", - "source_mapping": { - "start": 961, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 9, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 926, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "TestContractBalance.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#42-45) uses a dangerous strict equality:\n\t- require(bool)(address(this).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#43)\n", - "markdown": "[TestContractBalance.bad2()](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L42-L45) uses a dangerous strict equality:\n\t- [require(bool)(address(this).balance == 10000000000000000000)](tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L43)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.4.25/incorrect_equality.sol#L42-L45", - "id": "ca734ebf2aff837ece445cea2cc8441a7a2a73b15bbb5cb68c6bde45ee52bea1", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol.0.5.16.IncorrectStrictEquality.json b/tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol.0.5.16.IncorrectStrictEquality.json deleted file mode 100644 index 08c0c334d..000000000 --- a/tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol.0.5.16.IncorrectStrictEquality.json +++ /dev/null @@ -1,2552 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1056, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "require(bool)(10000000000000000000 == address(this).balance)", - "source_mapping": { - "start": 1091, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1056, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "TestContractBalance.bad3() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#47-50) uses a dangerous strict equality:\n\t- require(bool)(10000000000000000000 == address(this).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#48)\n", - "markdown": "[TestContractBalance.bad3()](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L47-L50) uses a dangerous strict equality:\n\t- [require(bool)(10000000000000000000 == address(this).balance)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L48)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L47-L50", - "id": "05ce842aed12884d58a58241f422dbad3b4c14769ffa4ca5930726f2948167a5", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 648, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(address(address(this)).balance == 10000000000000000000)", - "source_mapping": { - "start": 683, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 648, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "TestContractBalance.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#32-35) uses a dangerous strict equality:\n\t- require(bool)(address(address(this)).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#33)\n", - "markdown": "[TestContractBalance.bad0()](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L32-L35) uses a dangerous strict equality:\n\t- [require(bool)(address(address(this)).balance == 10000000000000000000)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L33)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L32-L35", - "id": "29c85226ec025437d4d2ff95e6bc6d934757fc5d3c834873afda9c38a5653756", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 787, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(10000000000000000000 == address(address(this)).balance)", - "source_mapping": { - "start": 822, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 38 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 787, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "TestContractBalance.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#37-40) uses a dangerous strict equality:\n\t- require(bool)(10000000000000000000 == address(address(this)).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#38)\n", - "markdown": "[TestContractBalance.bad1()](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L37-L40) uses a dangerous strict equality:\n\t- [require(bool)(10000000000000000000 == address(address(this)).balance)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L38)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L37-L40", - "id": "352f19146eb75c68f7cb8e05aaaf84a5f2d13e4c03af43e6bcb79babb6411231", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad6", - "source_mapping": { - "start": 1538, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad6()" - } - }, - { - "type": "node", - "name": "balance == 10000000000000000000", - "source_mapping": { - "start": 1635, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad6", - "source_mapping": { - "start": 1538, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad6()" - } - } - } - } - ], - "description": "TestContractBalance.bad6() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#66-71) uses a dangerous strict equality:\n\t- balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#68)\n", - "markdown": "[TestContractBalance.bad6()](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L66-L71) uses a dangerous strict equality:\n\t- [balance == 10000000000000000000](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L68)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L66-L71", - "id": "4285173d33e2e37daddea7c9cb3def32e8b038d9040669bc21a8a8e1e50e982a", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 511, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 165, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(ERC20Variable)" - } - }, - { - "type": "node", - "name": "require(bool)(erc.balanceOf(msg.sender) == 10)", - "source_mapping": { - "start": 562, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 511, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 165, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(ERC20Variable)" - } - } - } - } - ], - "description": "ERC20TestBalance.bad1(ERC20Variable) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#25-27) uses a dangerous strict equality:\n\t- require(bool)(erc.balanceOf(msg.sender) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#26)\n", - "markdown": "[ERC20TestBalance.bad1(ERC20Variable)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L25-L27) uses a dangerous strict equality:\n\t- [require(bool)(erc.balanceOf(msg.sender) == 10)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L25-L27", - "id": "44c65a790eee93eb2653c6d9f7c1c8c6d9ef4e4264408dc30d5b6a938873cf5e", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1362, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - }, - { - "type": "node", - "name": "10000000000000000000 == balance", - "source_mapping": { - "start": 1450, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1362, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - } - } - } - ], - "description": "TestContractBalance.bad5() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#59-64) uses a dangerous strict equality:\n\t- 10000000000000000000 == balance (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#61)\n", - "markdown": "[TestContractBalance.bad5()](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L59-L64) uses a dangerous strict equality:\n\t- [10000000000000000000 == balance](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L61)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L59-L64", - "id": "51ece6317db49c0895eef868169b4d605bd7ca72db817a1573edae815d98e71e", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1186, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - }, - { - "type": "node", - "name": "balance == 10000000000000000000", - "source_mapping": { - "start": 1274, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 54 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1186, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - } - } - } - ], - "description": "TestContractBalance.bad4() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#52-57) uses a dangerous strict equality:\n\t- balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#54)\n", - "markdown": "[TestContractBalance.bad4()](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L52-L57) uses a dangerous strict equality:\n\t- [balance == 10000000000000000000](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L54)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L52-L57", - "id": "5d07adb6b1f660d1241d7d9080670f197a09ffc6073d6bcfa5865cc83181708a", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 3000, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(block.number == 0)", - "source_mapping": { - "start": 3034, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 128 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 3000, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#127-129) uses a dangerous strict equality:\n\t- require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#128)\n", - "markdown": "[TestSolidityKeyword.bad1()](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L127-L129) uses a dangerous strict equality:\n\t- [require(bool)(block.number == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L128)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L127-L129", - "id": "7c6efda5fe56ba580b299737a41836ed9e39afa559d713d4fffd097d1cf1f889", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 926, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "require(bool)(address(this).balance == 10000000000000000000)", - "source_mapping": { - "start": 961, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 9, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 926, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 612, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "TestContractBalance.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#42-45) uses a dangerous strict equality:\n\t- require(bool)(address(this).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#43)\n", - "markdown": "[TestContractBalance.bad2()](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L42-L45) uses a dangerous strict equality:\n\t- [require(bool)(address(this).balance == 10000000000000000000)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L43)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L42-L45", - "id": "8622833a6a62a400ce901b4bc78815431f921549570de73ba2421375a4b1abae", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 404, - "length": 101, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 165, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(ERC20Function)" - } - }, - { - "type": "node", - "name": "require(bool)(erc.balanceOf(address(this)) == 10)", - "source_mapping": { - "start": 455, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 404, - "length": 101, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 165, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(ERC20Function)" - } - } - } - } - ], - "description": "ERC20TestBalance.bad0(ERC20Function) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#21-23) uses a dangerous strict equality:\n\t- require(bool)(erc.balanceOf(address(this)) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#22)\n", - "markdown": "[ERC20TestBalance.bad0(ERC20Function)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L21-L23) uses a dangerous strict equality:\n\t- [require(bool)(erc.balanceOf(address(this)) == 10)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L21-L23", - "id": "c1401150abb2f3a3b83eaddd0fee0e89da8c9e96f56c031103654d3fcb6480c5", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 2935, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 123, - 124, - 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(now == 0)", - "source_mapping": { - "start": 2969, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 124 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 2935, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 123, - 124, - 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#123-125) uses a dangerous strict equality:\n\t- require(bool)(now == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#124)\n", - "markdown": "[TestSolidityKeyword.bad0()](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L123-L125) uses a dangerous strict equality:\n\t- [require(bool)(now == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L124)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L123-L125", - "id": "c87d2ed05c3b9e133ab1cc40d5414c3b7ee237fd9349b50c57676f52d5055f41", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 3072, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 131, - 132, - 133 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "require(bool)(block.number == 0)", - "source_mapping": { - "start": 3106, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 132 - ], - "starting_column": 9, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 3072, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 131, - 132, - 133 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2368, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#131-133) uses a dangerous strict equality:\n\t- require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#132)\n", - "markdown": "[TestSolidityKeyword.bad2()](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L131-L133) uses a dangerous strict equality:\n\t- [require(bool)(block.number == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L132)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.5.16/incorrect_equality.sol#L131-L133", - "id": "ed3aa653005f54d880adb9c0f742a41005855f1c452f1eb93c4d952eeeedfbc5", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol.0.6.11.IncorrectStrictEquality.json b/tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol.0.6.11.IncorrectStrictEquality.json deleted file mode 100644 index aa217c978..000000000 --- a/tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol.0.6.11.IncorrectStrictEquality.json +++ /dev/null @@ -1,2552 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1379, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - }, - { - "type": "node", - "name": "10000000000000000000 == balance", - "source_mapping": { - "start": 1467, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1379, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - } - } - } - ], - "description": "TestContractBalance.bad5() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#59-64) uses a dangerous strict equality:\n\t- 10000000000000000000 == balance (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#61)\n", - "markdown": "[TestContractBalance.bad5()](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L59-L64) uses a dangerous strict equality:\n\t- [10000000000000000000 == balance](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L61)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L59-L64", - "id": "1e510a2b317178caeb183ec9237ce9b066a622e7564bdfe00368f1d94812b072", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 421, - "length": 101, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 182, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(ERC20Function)" - } - }, - { - "type": "node", - "name": "require(bool)(erc.balanceOf(address(this)) == 10)", - "source_mapping": { - "start": 472, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 421, - "length": 101, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 182, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(ERC20Function)" - } - } - } - } - ], - "description": "ERC20TestBalance.bad0(ERC20Function) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#21-23) uses a dangerous strict equality:\n\t- require(bool)(erc.balanceOf(address(this)) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#22)\n", - "markdown": "[ERC20TestBalance.bad0(ERC20Function)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L21-L23) uses a dangerous strict equality:\n\t- [require(bool)(erc.balanceOf(address(this)) == 10)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L21-L23", - "id": "2147be33b046bb4ad215164b5d2d6eece75c761b5d6f1dfa4738c06cb9a3da06", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1073, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "require(bool)(10000000000000000000 == address(this).balance)", - "source_mapping": { - "start": 1108, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1073, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "TestContractBalance.bad3() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#47-50) uses a dangerous strict equality:\n\t- require(bool)(10000000000000000000 == address(this).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#48)\n", - "markdown": "[TestContractBalance.bad3()](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L47-L50) uses a dangerous strict equality:\n\t- [require(bool)(10000000000000000000 == address(this).balance)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L48)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L47-L50", - "id": "2aefe606d348048339e03786d458d8fa318a4c927379da603438fc43a380d75a", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad6", - "source_mapping": { - "start": 1555, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad6()" - } - }, - { - "type": "node", - "name": "balance == 10000000000000000000", - "source_mapping": { - "start": 1652, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad6", - "source_mapping": { - "start": 1555, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad6()" - } - } - } - } - ], - "description": "TestContractBalance.bad6() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#66-71) uses a dangerous strict equality:\n\t- balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#68)\n", - "markdown": "[TestContractBalance.bad6()](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L66-L71) uses a dangerous strict equality:\n\t- [balance == 10000000000000000000](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L68)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L66-L71", - "id": "71feb4e8fb94d1d8d22e43fa29c5e87973d8c15e195b642758e4a05c35cd0338", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 2952, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 123, - 124, - 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(now == 0)", - "source_mapping": { - "start": 2986, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 124 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 2952, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 123, - 124, - 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#123-125) uses a dangerous strict equality:\n\t- require(bool)(now == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#124)\n", - "markdown": "[TestSolidityKeyword.bad0()](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L123-L125) uses a dangerous strict equality:\n\t- [require(bool)(now == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L124)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L123-L125", - "id": "91ff3604b6455240febb920249669ca70f281c04a823f722d446cf9fe06fc5a8", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 943, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "require(bool)(address(this).balance == 10000000000000000000)", - "source_mapping": { - "start": 978, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 9, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 943, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "TestContractBalance.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#42-45) uses a dangerous strict equality:\n\t- require(bool)(address(this).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#43)\n", - "markdown": "[TestContractBalance.bad2()](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L42-L45) uses a dangerous strict equality:\n\t- [require(bool)(address(this).balance == 10000000000000000000)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L43)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L42-L45", - "id": "a5c23b46b1ab4eb0e5944bf42ac85dff621028f3144f5e64b2db3af51cc5c3af", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 528, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 182, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(ERC20Variable)" - } - }, - { - "type": "node", - "name": "require(bool)(erc.balanceOf(msg.sender) == 10)", - "source_mapping": { - "start": 579, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 528, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 182, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(ERC20Variable)" - } - } - } - } - ], - "description": "ERC20TestBalance.bad1(ERC20Variable) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#25-27) uses a dangerous strict equality:\n\t- require(bool)(erc.balanceOf(msg.sender) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#26)\n", - "markdown": "[ERC20TestBalance.bad1(ERC20Variable)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L25-L27) uses a dangerous strict equality:\n\t- [require(bool)(erc.balanceOf(msg.sender) == 10)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L25-L27", - "id": "a8f80863931a71bb79be323f5312d2b15235f4cf63cf47dedbd3fc3a467b8426", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 3017, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(block.number == 0)", - "source_mapping": { - "start": 3051, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 128 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 3017, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#127-129) uses a dangerous strict equality:\n\t- require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#128)\n", - "markdown": "[TestSolidityKeyword.bad1()](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L127-L129) uses a dangerous strict equality:\n\t- [require(bool)(block.number == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L128)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L127-L129", - "id": "c5a137c85131387da43effbf4eb514b58a482c76f58ca9ae0e45a9f4c67f57c6", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1203, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - }, - { - "type": "node", - "name": "balance == 10000000000000000000", - "source_mapping": { - "start": 1291, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 54 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1203, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - } - } - } - ], - "description": "TestContractBalance.bad4() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#52-57) uses a dangerous strict equality:\n\t- balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#54)\n", - "markdown": "[TestContractBalance.bad4()](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L52-L57) uses a dangerous strict equality:\n\t- [balance == 10000000000000000000](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L54)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L52-L57", - "id": "dc0d579cd55024763718830f2e8bcdc2cba6001246385b10e994bb45a6bdcdc4", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 804, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(10000000000000000000 == address(address(this)).balance)", - "source_mapping": { - "start": 839, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 38 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 804, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "TestContractBalance.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#37-40) uses a dangerous strict equality:\n\t- require(bool)(10000000000000000000 == address(address(this)).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#38)\n", - "markdown": "[TestContractBalance.bad1()](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L37-L40) uses a dangerous strict equality:\n\t- [require(bool)(10000000000000000000 == address(address(this)).balance)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L38)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L37-L40", - "id": "e4fe545c6832599a35bb50b2d617ee8e7f4565d312535e362a015253ee13fe2e", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 3089, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 131, - 132, - 133 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "require(bool)(block.number == 0)", - "source_mapping": { - "start": 3123, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 132 - ], - "starting_column": 9, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 3089, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 131, - 132, - 133 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 774, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#131-133) uses a dangerous strict equality:\n\t- require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#132)\n", - "markdown": "[TestSolidityKeyword.bad2()](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L131-L133) uses a dangerous strict equality:\n\t- [require(bool)(block.number == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L132)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L131-L133", - "id": "ec490b5b95549f210fe15cc6df8aeb9c8b78cc71eb3b336cefe602463480ea02", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 665, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(address(address(this)).balance == 10000000000000000000)", - "source_mapping": { - "start": 700, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 665, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "TestContractBalance.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#32-35) uses a dangerous strict equality:\n\t- require(bool)(address(address(this)).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#33)\n", - "markdown": "[TestContractBalance.bad0()](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L32-L35) uses a dangerous strict equality:\n\t- [require(bool)(address(address(this)).balance == 10000000000000000000)](tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L33)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.6.11/incorrect_equality.sol#L32-L35", - "id": "fbac3cce622ed841991a9947a59d8077df6ddd5f5250bb2af8a3169eb4204f1b", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol.0.7.6.IncorrectStrictEquality.json b/tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol.0.7.6.IncorrectStrictEquality.json deleted file mode 100644 index ddadd3deb..000000000 --- a/tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol.0.7.6.IncorrectStrictEquality.json +++ /dev/null @@ -1,2552 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 528, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 182, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(ERC20Variable)" - } - }, - { - "type": "node", - "name": "require(bool)(erc.balanceOf(msg.sender) == 10)", - "source_mapping": { - "start": 579, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 528, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 182, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(ERC20Variable)" - } - } - } - } - ], - "description": "ERC20TestBalance.bad1(ERC20Variable) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#25-27) uses a dangerous strict equality:\n\t- require(bool)(erc.balanceOf(msg.sender) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#26)\n", - "markdown": "[ERC20TestBalance.bad1(ERC20Variable)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L25-L27) uses a dangerous strict equality:\n\t- [require(bool)(erc.balanceOf(msg.sender) == 10)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L25-L27", - "id": "0129e3a960eb5eb0d7bc4f2d6c33fa5ce18ae0704390d3ef9829ce20bcb3d071", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad6", - "source_mapping": { - "start": 1555, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad6()" - } - }, - { - "type": "node", - "name": "balance == 10000000000000000000", - "source_mapping": { - "start": 1652, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad6", - "source_mapping": { - "start": 1555, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad6()" - } - } - } - } - ], - "description": "TestContractBalance.bad6() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#66-71) uses a dangerous strict equality:\n\t- balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#68)\n", - "markdown": "[TestContractBalance.bad6()](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L66-L71) uses a dangerous strict equality:\n\t- [balance == 10000000000000000000](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L68)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L66-L71", - "id": "1701908087786c2d3ca6253022b69a41a3637584ebfbe396e0c682097c24119c", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 421, - "length": 101, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 182, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(ERC20Function)" - } - }, - { - "type": "node", - "name": "require(bool)(erc.balanceOf(address(this)) == 10)", - "source_mapping": { - "start": 472, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 421, - "length": 101, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ERC20TestBalance", - "source_mapping": { - "start": 182, - "length": 445, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0(ERC20Function)" - } - } - } - } - ], - "description": "ERC20TestBalance.bad0(ERC20Function) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#21-23) uses a dangerous strict equality:\n\t- require(bool)(erc.balanceOf(address(this)) == 10) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#22)\n", - "markdown": "[ERC20TestBalance.bad0(ERC20Function)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L21-L23) uses a dangerous strict equality:\n\t- [require(bool)(erc.balanceOf(address(this)) == 10)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L21-L23", - "id": "5e030ae824ffc72258ca317b13b88e476010bab843ed560bcf3e91a77e30869e", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 804, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(10000000000000000000 == address(address(this)).balance)", - "source_mapping": { - "start": 839, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 38 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 804, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 37, - 38, - 39, - 40 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "TestContractBalance.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#37-40) uses a dangerous strict equality:\n\t- require(bool)(10000000000000000000 == address(address(this)).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#38)\n", - "markdown": "[TestContractBalance.bad1()](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L37-L40) uses a dangerous strict equality:\n\t- [require(bool)(10000000000000000000 == address(address(this)).balance)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L38)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L37-L40", - "id": "64d04d8f94ed18470f850eb8696b192e2b2f59dcc751feca4116aa2970ead1ca", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 2964, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 123, - 124, - 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 798, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(block.timestamp == 0)", - "source_mapping": { - "start": 2998, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 124 - ], - "starting_column": 9, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 2964, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 123, - 124, - 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 798, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#123-125) uses a dangerous strict equality:\n\t- require(bool)(block.timestamp == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#124)\n", - "markdown": "[TestSolidityKeyword.bad0()](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L123-L125) uses a dangerous strict equality:\n\t- [require(bool)(block.timestamp == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L124)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L123-L125", - "id": "7b0984af9e0ffedf1575cebc039f322695055a01b9cbd81771e552c441019628", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1073, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "require(bool)(10000000000000000000 == address(this).balance)", - "source_mapping": { - "start": 1108, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 1073, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "TestContractBalance.bad3() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#47-50) uses a dangerous strict equality:\n\t- require(bool)(10000000000000000000 == address(this).balance) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#48)\n", - "markdown": "[TestContractBalance.bad3()](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L47-L50) uses a dangerous strict equality:\n\t- [require(bool)(10000000000000000000 == address(this).balance)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L48)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L47-L50", - "id": "a6897be58505c046705a41d57507a230ae91f8582da3ba6573a40275cfef0608", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1203, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - }, - { - "type": "node", - "name": "balance == 10000000000000000000", - "source_mapping": { - "start": 1291, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 54 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1203, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - } - } - } - ], - "description": "TestContractBalance.bad4() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#52-57) uses a dangerous strict equality:\n\t- balance == 10000000000000000000 (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#54)\n", - "markdown": "[TestContractBalance.bad4()](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L52-L57) uses a dangerous strict equality:\n\t- [balance == 10000000000000000000](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L54)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L52-L57", - "id": "b8b849eb6912d14d89c08cc62631b526b98c443d404241f3c52efc638b2bcc86", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 665, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(address(address(this)).balance == 10000000000000000000)", - "source_mapping": { - "start": 700, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 665, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 32, - 33, - 34, - 35 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "TestContractBalance.bad0() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#32-35) uses a dangerous strict equality:\n\t- require(bool)(address(address(this)).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#33)\n", - "markdown": "[TestContractBalance.bad0()](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L32-L35) uses a dangerous strict equality:\n\t- [require(bool)(address(address(this)).balance == 10000000000000000000)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L33)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L32-L35", - "id": "c13f1ea5f8ba0968d254f38bae296c5528326f464233f2eb283c0a952cf358ff", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 3113, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 131, - 132, - 133 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 798, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "require(bool)(block.number == 0)", - "source_mapping": { - "start": 3147, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 132 - ], - "starting_column": 9, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 3113, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 131, - 132, - 133 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 798, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#131-133) uses a dangerous strict equality:\n\t- require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#132)\n", - "markdown": "[TestSolidityKeyword.bad2()](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L131-L133) uses a dangerous strict equality:\n\t- [require(bool)(block.number == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L132)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L131-L133", - "id": "c2653e938f80ae63a20262eda2521ab3d846f822947c9b7d8b823388e3997928", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1379, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - }, - { - "type": "node", - "name": "10000000000000000000 == balance", - "source_mapping": { - "start": 1467, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 13, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1379, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad5()" - } - } - } - } - ], - "description": "TestContractBalance.bad5() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#59-64) uses a dangerous strict equality:\n\t- 10000000000000000000 == balance (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#61)\n", - "markdown": "[TestContractBalance.bad5()](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L59-L64) uses a dangerous strict equality:\n\t- [10000000000000000000 == balance](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L61)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L59-L64", - "id": "c8b2fbe9338a5c9af7e9645699b830df0239a588e340d65c5d0c2b918f1773d1", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 943, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "require(bool)(address(this).balance == 10000000000000000000)", - "source_mapping": { - "start": 978, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 9, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 943, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestContractBalance", - "source_mapping": { - "start": 629, - "length": 1754, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "TestContractBalance.bad2() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#42-45) uses a dangerous strict equality:\n\t- require(bool)(address(this).balance == 10000000000000000000) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#43)\n", - "markdown": "[TestContractBalance.bad2()](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L42-L45) uses a dangerous strict equality:\n\t- [require(bool)(address(this).balance == 10000000000000000000)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L43)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L42-L45", - "id": "ea6ab897bf4edb3c5139321ca547b08717767225087f380099e8472566a6a8a0", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 3041, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 798, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(block.number == 0)", - "source_mapping": { - "start": 3075, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 128 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 3041, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 127, - 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestSolidityKeyword", - "source_mapping": { - "start": 2385, - "length": 798, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "TestSolidityKeyword.bad1() (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#127-129) uses a dangerous strict equality:\n\t- require(bool)(block.number == 0) (tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#128)\n", - "markdown": "[TestSolidityKeyword.bad1()](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L127-L129) uses a dangerous strict equality:\n\t- [require(bool)(block.number == 0)](tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L128)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol#L127-L129", - "id": "f9063c78a209722de77a042a87a28a14eea47675f73a891172c3262232d33e70", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol.0.4.25.ModifierDefaultDetection.json b/tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol.0.4.25.ModifierDefaultDetection.json deleted file mode 100644 index c17d96402..000000000 --- a/tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol.0.4.25.ModifierDefaultDetection.json +++ /dev/null @@ -1,320 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "loopsNoResult", - "source_mapping": { - "start": 496, - "length": 251, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "loopsNoResult()" - } - } - ], - "description": "Modifier Test.loopsNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#30-41) does not always execute _; or revert", - "markdown": "Modifier [Test.loopsNoResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#L30-L41) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#L30-L41", - "id": "0ba95ef5faf2a00c06d4f83c5159220d1cd06bc346a1287a6634334b7a0c433f", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "requireAssertNoResult", - "source_mapping": { - "start": 277, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "requireAssertNoResult()" - } - } - ], - "description": "Modifier Test.requireAssertNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#18-22) does not always execute _; or revert", - "markdown": "Modifier [Test.requireAssertNoResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#L18-L22) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#L18-L22", - "id": "35d07e11ee69abb8fb0e63dddefc1ab059bf450c71c992f70c5f96e484fbcbcc", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "noResult", - "source_mapping": { - "start": 20, - "length": 103, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "noResult()" - } - } - ], - "description": "Modifier Test.noResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#2-6) does not always execute _; or revert", - "markdown": "Modifier [Test.noResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#L2-L6) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.4.25/modifier_default.sol#L2-L6", - "id": "e83e0a544940d3ddd9ea8fe0ae0277bec4660926110809cfd28153817969c3a3", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol.0.5.16.ModifierDefaultDetection.json b/tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol.0.5.16.ModifierDefaultDetection.json deleted file mode 100644 index 51ba3b9ce..000000000 --- a/tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol.0.5.16.ModifierDefaultDetection.json +++ /dev/null @@ -1,320 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "loopsNoResult", - "source_mapping": { - "start": 496, - "length": 251, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "loopsNoResult()" - } - } - ], - "description": "Modifier Test.loopsNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#30-41) does not always execute _; or revert", - "markdown": "Modifier [Test.loopsNoResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#L30-L41) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#L30-L41", - "id": "0ba95ef5faf2a00c06d4f83c5159220d1cd06bc346a1287a6634334b7a0c433f", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "requireAssertNoResult", - "source_mapping": { - "start": 277, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "requireAssertNoResult()" - } - } - ], - "description": "Modifier Test.requireAssertNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#18-22) does not always execute _; or revert", - "markdown": "Modifier [Test.requireAssertNoResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#L18-L22) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#L18-L22", - "id": "35d07e11ee69abb8fb0e63dddefc1ab059bf450c71c992f70c5f96e484fbcbcc", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "noResult", - "source_mapping": { - "start": 20, - "length": 103, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "noResult()" - } - } - ], - "description": "Modifier Test.noResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#2-6) does not always execute _; or revert", - "markdown": "Modifier [Test.noResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#L2-L6) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.5.16/modifier_default.sol#L2-L6", - "id": "e83e0a544940d3ddd9ea8fe0ae0277bec4660926110809cfd28153817969c3a3", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol.0.6.11.ModifierDefaultDetection.json b/tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol.0.6.11.ModifierDefaultDetection.json deleted file mode 100644 index 28e23e301..000000000 --- a/tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol.0.6.11.ModifierDefaultDetection.json +++ /dev/null @@ -1,320 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "loopsNoResult", - "source_mapping": { - "start": 496, - "length": 251, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "loopsNoResult()" - } - } - ], - "description": "Modifier Test.loopsNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#30-41) does not always execute _; or revert", - "markdown": "Modifier [Test.loopsNoResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#L30-L41) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#L30-L41", - "id": "0ba95ef5faf2a00c06d4f83c5159220d1cd06bc346a1287a6634334b7a0c433f", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "requireAssertNoResult", - "source_mapping": { - "start": 277, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "requireAssertNoResult()" - } - } - ], - "description": "Modifier Test.requireAssertNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#18-22) does not always execute _; or revert", - "markdown": "Modifier [Test.requireAssertNoResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#L18-L22) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#L18-L22", - "id": "35d07e11ee69abb8fb0e63dddefc1ab059bf450c71c992f70c5f96e484fbcbcc", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "noResult", - "source_mapping": { - "start": 20, - "length": 103, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "noResult()" - } - } - ], - "description": "Modifier Test.noResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#2-6) does not always execute _; or revert", - "markdown": "Modifier [Test.noResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#L2-L6) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.6.11/modifier_default.sol#L2-L6", - "id": "e83e0a544940d3ddd9ea8fe0ae0277bec4660926110809cfd28153817969c3a3", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol.0.7.6.ModifierDefaultDetection.json b/tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol.0.7.6.ModifierDefaultDetection.json deleted file mode 100644 index 71397c0df..000000000 --- a/tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol.0.7.6.ModifierDefaultDetection.json +++ /dev/null @@ -1,320 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "loopsNoResult", - "source_mapping": { - "start": 496, - "length": 251, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "loopsNoResult()" - } - } - ], - "description": "Modifier Test.loopsNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#30-41) does not always execute _; or revert", - "markdown": "Modifier [Test.loopsNoResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#L30-L41) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#L30-L41", - "id": "0ba95ef5faf2a00c06d4f83c5159220d1cd06bc346a1287a6634334b7a0c433f", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "requireAssertNoResult", - "source_mapping": { - "start": 277, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "requireAssertNoResult()" - } - } - ], - "description": "Modifier Test.requireAssertNoResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#18-22) does not always execute _; or revert", - "markdown": "Modifier [Test.requireAssertNoResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#L18-L22) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#L18-L22", - "id": "35d07e11ee69abb8fb0e63dddefc1ab059bf450c71c992f70c5f96e484fbcbcc", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "noResult", - "source_mapping": { - "start": 20, - "length": 103, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 901, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "noResult()" - } - } - ], - "description": "Modifier Test.noResult() (tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#2-6) does not always execute _; or revert", - "markdown": "Modifier [Test.noResult()](tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#L2-L6) does not always execute _; or revert", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-modifier/0.7.6/modifier_default.sol#L2-L6", - "id": "e83e0a544940d3ddd9ea8fe0ae0277bec4660926110809cfd28153817969c3a3", - "check": "incorrect-modifier", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-shift/0.4.25/shift_parameter_mixup.sol.0.4.25.ShiftParameterMixup.json b/tests/e2e/detectors/test_data/incorrect-shift/0.4.25/shift_parameter_mixup.sol.0.4.25.ShiftParameterMixup.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/incorrect-shift/0.4.25/shift_parameter_mixup.sol.0.4.25.ShiftParameterMixup.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-shift/0.5.16/shift_parameter_mixup.sol.0.5.16.ShiftParameterMixup.json b/tests/e2e/detectors/test_data/incorrect-shift/0.5.16/shift_parameter_mixup.sol.0.5.16.ShiftParameterMixup.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/incorrect-shift/0.5.16/shift_parameter_mixup.sol.0.5.16.ShiftParameterMixup.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol.0.6.11.ShiftParameterMixup.json b/tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol.0.6.11.ShiftParameterMixup.json deleted file mode 100644 index 5b4d6115a..000000000 --- a/tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol.0.6.11.ShiftParameterMixup.json +++ /dev/null @@ -1,130 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 19, - "length": 106, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "a = 8 >> a", - "source_mapping": { - "start": 93, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 13, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 19, - "length": 106, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol#3-7) contains an incorrect shift operation: a = 8 >> a (tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol#5)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol#L3-L7) contains an incorrect shift operation: [a = 8 >> a](tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol#L5)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-shift/0.6.11/shift_parameter_mixup.sol#L3-L7", - "id": "3b49c1812a94a200ed222cb95c2aa98fb38f623349bf4eceff8b578d1edfb450", - "check": "incorrect-shift", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol.0.7.6.ShiftParameterMixup.json b/tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol.0.7.6.ShiftParameterMixup.json deleted file mode 100644 index 20150fd69..000000000 --- a/tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol.0.7.6.ShiftParameterMixup.json +++ /dev/null @@ -1,130 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 19, - "length": 106, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "a = 8 >> a", - "source_mapping": { - "start": 93, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 13, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 19, - "length": 106, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#3-7) contains an incorrect shift operation: a = 8 >> a (tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#5)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#L3-L7) contains an incorrect shift operation: [a = 8 >> a](tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#L5)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#L3-L7", - "id": "1e0b56cf3193f6a593cb39fce7f93feb1d57c319bcd090e9a1cd3d96606409cb", - "check": "incorrect-shift", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol.0.4.25.IncorrectUnaryExpressionDetection.json b/tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol.0.4.25.IncorrectUnaryExpressionDetection.json deleted file mode 100644 index 910b5c2aa..000000000 --- a/tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol.0.4.25.IncorrectUnaryExpressionDetection.json +++ /dev/null @@ -1,521 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "slitherConstructorVariables", - "source_mapping": { - "start": 0, - "length": 204, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 2 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 204, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "slitherConstructorVariables()" - } - }, - { - "type": "node", - "name": "c = (b = + 1)", - "source_mapping": { - "start": 42, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 3, - "ending_column": 16 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "slitherConstructorVariables", - "source_mapping": { - "start": 0, - "length": 204, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 2 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 204, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "slitherConstructorVariables()" - } - } - } - } - ], - "description": "C.slitherConstructorVariables() (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#1-15) uses an dangerous unary operator: c = (b = + 1) (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#4)\n", - "markdown": "[C.slitherConstructorVariables()](tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L1-L15) uses an dangerous unary operator: [c = (b = + 1)](tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L1-L15", - "id": "1cd95648731fa1d8591ad7893453cc18fac345beb99f74b732ba348913c39440", - "check": "incorrect-unary", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 60, - "length": 142, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 204, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x = + 144444", - "source_mapping": { - "start": 104, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 60, - "length": 142, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 204, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#6-14) uses an dangerous unary operator: x = + 144444 (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#8)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L6-L14) uses an dangerous unary operator: [x = + 144444](tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L6-L14", - "id": "752dfc78458ce332044d64166a2fc7cad63f5797b4e1d4d983a0681c43a7a930", - "check": "incorrect-unary", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "c", - "source_mapping": { - "start": 42, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 3, - "ending_column": 16 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 204, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "C.c (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#4) uses an dangerous unary operator: (b = + 1)\n", - "markdown": "[C.c](tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L4) uses an dangerous unary operator: (b = + 1)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L4", - "id": "98d05a4acbe13ff0e6fa795af35dc2002541cc7607f3f4d7ffb356f9d33681bd", - "check": "incorrect-unary", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 60, - "length": 142, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 204, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x = (x = + 1)", - "source_mapping": { - "start": 136, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 60, - "length": 142, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 204, - "filename_relative": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#6-14) uses an dangerous unary operator: x = (x = + 1) (tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#9)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L6-L14) uses an dangerous unary operator: [x = (x = + 1)](tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/incorrect-unary/0.4.25/invalid_unary_expression.sol#L6-L14", - "id": "aa018a8d101b2e2a91a45c0075355e9dfae1b2abe322079230cc2a89f58135fb", - "check": "incorrect-unary", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol.0.4.25.LockedEther.json b/tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol.0.4.25.LockedEther.json deleted file mode 100644 index 8a96569ce..000000000 --- a/tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol.0.4.25.LockedEther.json +++ /dev/null @@ -1,77 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "OnlyLocked", - "source_mapping": { - "start": 368, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 1, - "ending_column": 33 - } - }, - { - "type": "function", - "name": "receive", - "source_mapping": { - "start": 47, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Locked", - "source_mapping": { - "start": 25, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "receive()" - } - } - ], - "description": "Contract locking ether found:\n\tContract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#26) has payable functions:\n\t - Locked.receive() (tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#4-6)\n\tBut does not have a function to withdraw the ether\n", - "markdown": "Contract locking ether found:\n\tContract [OnlyLocked](tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#L26) has payable functions:\n\t - [Locked.receive()](tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#L4-L6)\n\tBut does not have a function to withdraw the ether\n", - "first_markdown_element": "tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#L26", - "id": "a2fad0e9c8a75e55b8c548dd184dc33d78142ea5bac9c36cdc5eb174e56d689c", - "check": "locked-ether", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol.0.5.16.LockedEther.json b/tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol.0.5.16.LockedEther.json deleted file mode 100644 index 5b39da397..000000000 --- a/tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol.0.5.16.LockedEther.json +++ /dev/null @@ -1,77 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "OnlyLocked", - "source_mapping": { - "start": 375, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 1, - "ending_column": 33 - } - }, - { - "type": "function", - "name": "receive", - "source_mapping": { - "start": 46, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Locked", - "source_mapping": { - "start": 24, - "length": 97, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "receive()" - } - } - ], - "description": "Contract locking ether found:\n\tContract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#26) has payable functions:\n\t - Locked.receive() (tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#4-6)\n\tBut does not have a function to withdraw the ether\n", - "markdown": "Contract locking ether found:\n\tContract [OnlyLocked](tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#L26) has payable functions:\n\t - [Locked.receive()](tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#L4-L6)\n\tBut does not have a function to withdraw the ether\n", - "first_markdown_element": "tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#L26", - "id": "a2fad0e9c8a75e55b8c548dd184dc33d78142ea5bac9c36cdc5eb174e56d689c", - "check": "locked-ether", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol.0.6.11.LockedEther.json b/tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol.0.6.11.LockedEther.json deleted file mode 100644 index 49eab9f41..000000000 --- a/tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol.0.6.11.LockedEther.json +++ /dev/null @@ -1,77 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "OnlyLocked", - "source_mapping": { - "start": 401, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 1, - "ending_column": 33 - } - }, - { - "type": "function", - "name": "receive_eth", - "source_mapping": { - "start": 49, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Locked", - "source_mapping": { - "start": 27, - "length": 101, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "receive_eth()" - } - } - ], - "description": "Contract locking ether found:\n\tContract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol#26) has payable functions:\n\t - Locked.receive_eth() (tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol#4-6)\n\tBut does not have a function to withdraw the ether\n", - "markdown": "Contract locking ether found:\n\tContract [OnlyLocked](tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol#L26) has payable functions:\n\t - [Locked.receive_eth()](tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol#L4-L6)\n\tBut does not have a function to withdraw the ether\n", - "first_markdown_element": "tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol#L26", - "id": "1818e759217cfcf6787001194bba24ad45470b123962a72d39062edb19447022", - "check": "locked-ether", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol.0.7.6.LockedEther.json b/tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol.0.7.6.LockedEther.json deleted file mode 100644 index dbfa51782..000000000 --- a/tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol.0.7.6.LockedEther.json +++ /dev/null @@ -1,77 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "OnlyLocked", - "source_mapping": { - "start": 401, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 1, - "ending_column": 33 - } - }, - { - "type": "function", - "name": "receive_eth", - "source_mapping": { - "start": 49, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Locked", - "source_mapping": { - "start": 27, - "length": 101, - "filename_relative": "tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "receive_eth()" - } - } - ], - "description": "Contract locking ether found:\n\tContract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol#26) has payable functions:\n\t - Locked.receive_eth() (tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol#4-6)\n\tBut does not have a function to withdraw the ether\n", - "markdown": "Contract locking ether found:\n\tContract [OnlyLocked](tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol#L26) has payable functions:\n\t - [Locked.receive_eth()](tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol#L4-L6)\n\tBut does not have a function to withdraw the ether\n", - "first_markdown_element": "tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol#L26", - "id": "1818e759217cfcf6787001194bba24ad45470b123962a72d39062edb19447022", - "check": "locked-ether", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol.0.4.25.LowLevelCalls.json b/tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol.0.4.25.LowLevelCalls.json deleted file mode 100644 index 0b60c1163..000000000 --- a/tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol.0.4.25.LowLevelCalls.json +++ /dev/null @@ -1,120 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "send", - "source_mapping": { - "start": 51, - "length": 112, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Sender", - "source_mapping": { - "start": 29, - "length": 136, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "send(address)" - } - }, - { - "type": "node", - "name": "_receiver.call.value(msg.value).gas(7777)()", - "source_mapping": { - "start": 111, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "send", - "source_mapping": { - "start": 51, - "length": 112, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Sender", - "source_mapping": { - "start": 29, - "length": 136, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "send(address)" - } - } - } - } - ], - "description": "Low level call in Sender.send(address) (tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol#5-7):\n\t- _receiver.call.value(msg.value).gas(7777)() (tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol#6)\n", - "markdown": "Low level call in [Sender.send(address)](tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol#L5-L7):\n\t- [_receiver.call.value(msg.value).gas(7777)()](tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol#L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/low-level-calls/0.4.25/low_level_calls.sol#L5-L7", - "id": "1891e8bc686be03365c3a2eed6695666275aa30d9b8a9be7aa3d7e9437d1a65a", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol.0.5.16.LowLevelCalls.json b/tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol.0.5.16.LowLevelCalls.json deleted file mode 100644 index 5c8498e47..000000000 --- a/tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol.0.5.16.LowLevelCalls.json +++ /dev/null @@ -1,120 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "send", - "source_mapping": { - "start": 51, - "length": 112, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Sender", - "source_mapping": { - "start": 29, - "length": 136, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "send(address)" - } - }, - { - "type": "node", - "name": "_receiver.call.value(msg.value).gas(7777)()", - "source_mapping": { - "start": 111, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "send", - "source_mapping": { - "start": 51, - "length": 112, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Sender", - "source_mapping": { - "start": 29, - "length": 136, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "send(address)" - } - } - } - } - ], - "description": "Low level call in Sender.send(address) (tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol#5-7):\n\t- _receiver.call.value(msg.value).gas(7777)() (tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol#6)\n", - "markdown": "Low level call in [Sender.send(address)](tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol#L5-L7):\n\t- [_receiver.call.value(msg.value).gas(7777)()](tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol#L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/low-level-calls/0.5.16/low_level_calls.sol#L5-L7", - "id": "faea7d741ed7b50f33370d71c431256bfcf9c3e0d2d753f250456288039484fc", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol.0.6.11.LowLevelCalls.json b/tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol.0.6.11.LowLevelCalls.json deleted file mode 100644 index 24733492b..000000000 --- a/tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol.0.6.11.LowLevelCalls.json +++ /dev/null @@ -1,120 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "send", - "source_mapping": { - "start": 51, - "length": 112, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Sender", - "source_mapping": { - "start": 29, - "length": 136, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "send(address)" - } - }, - { - "type": "node", - "name": "_receiver.call.value(msg.value).gas(7777)()", - "source_mapping": { - "start": 111, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "send", - "source_mapping": { - "start": 51, - "length": 112, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Sender", - "source_mapping": { - "start": 29, - "length": 136, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "send(address)" - } - } - } - } - ], - "description": "Low level call in Sender.send(address) (tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol#5-7):\n\t- _receiver.call.value(msg.value).gas(7777)() (tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol#6)\n", - "markdown": "Low level call in [Sender.send(address)](tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol#L5-L7):\n\t- [_receiver.call.value(msg.value).gas(7777)()](tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol#L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/low-level-calls/0.6.11/low_level_calls.sol#L5-L7", - "id": "79efc16fdd7c9cafb6ea0b7bf20805c61342b0205d80e50a74d16eb0240837fe", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol.0.7.6.LowLevelCalls.json b/tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol.0.7.6.LowLevelCalls.json deleted file mode 100644 index 28ee31e98..000000000 --- a/tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol.0.7.6.LowLevelCalls.json +++ /dev/null @@ -1,120 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "send", - "source_mapping": { - "start": 51, - "length": 112, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Sender", - "source_mapping": { - "start": 29, - "length": 136, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "send(address)" - } - }, - { - "type": "node", - "name": "_receiver.call{gas: 7777,value: msg.value}()", - "source_mapping": { - "start": 111, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "send", - "source_mapping": { - "start": 51, - "length": 112, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Sender", - "source_mapping": { - "start": 29, - "length": 136, - "filename_relative": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "send(address)" - } - } - } - } - ], - "description": "Low level call in Sender.send(address) (tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol#5-7):\n\t- _receiver.call{gas: 7777,value: msg.value}() (tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol#6)\n", - "markdown": "Low level call in [Sender.send(address)](tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol#L5-L7):\n\t- [_receiver.call{gas: 7777,value: msg.value}()](tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol#L6)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/low-level-calls/0.7.6/low_level_calls.sol#L5-L7", - "id": "690c796e376fac67085b713c1fbe904c601545e617d290918e244f82ecf12bbb", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol.0.4.25.MappingDeletionDetection.json b/tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol.0.4.25.MappingDeletionDetection.json deleted file mode 100644 index 3a68c56a3..000000000 --- a/tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol.0.4.25.MappingDeletionDetection.json +++ /dev/null @@ -1,413 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "deleteSt", - "source_mapping": { - "start": 114, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 158, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteSt(Lib.MyStruct[1])" - } - }, - { - "type": "struct", - "name": "MyStruct", - "source_mapping": { - "start": 47, - "length": 61, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 158, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "node", - "name": "delete st[0]", - "source_mapping": { - "start": 165, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deleteSt", - "source_mapping": { - "start": 114, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 158, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteSt(Lib.MyStruct[1])" - } - } - } - } - ], - "description": "Lib.deleteSt(Lib.MyStruct[1]) (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#9-11) deletes Lib.MyStruct (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#5-7) which contains a mapping:\n\t-delete st[0] (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#10)\n", - "markdown": "[Lib.deleteSt(Lib.MyStruct[1])](tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#L9-L11) deletes [Lib.MyStruct](tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#L5-L7) which contains a mapping:\n\t-[delete st[0]](tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#L9-L11", - "id": "480f143e218317272b848a3585bad43e4e06d4ebee428388434fd9782dd7a6ea", - "check": "mapping-deletion", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "deleteBalance", - "source_mapping": { - "start": 544, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 189, - "length": 825, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteBalance(uint256)" - } - }, - { - "type": "struct", - "name": "BalancesStruct", - "source_mapping": { - "start": 218, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 189, - "length": 825, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "node", - "name": "delete stackBalance[idx]", - "source_mapping": { - "start": 650, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 30 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deleteBalance", - "source_mapping": { - "start": 544, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 189, - "length": 825, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteBalance(uint256)" - } - } - } - } - ], - "description": "Balances.deleteBalance(uint256) (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#28-31) deletes Balances.BalancesStruct (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#17-20) which contains a mapping:\n\t-delete stackBalance[idx] (tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#30)\n", - "markdown": "[Balances.deleteBalance(uint256)](tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#L28-L31) deletes [Balances.BalancesStruct](tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#L17-L20) which contains a mapping:\n\t-[delete stackBalance[idx]](tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#L30)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/mapping-deletion/0.4.25/MappingDeletion.sol#L28-L31", - "id": "fd9b876be048b4faa465b510cd9a008e901c270f6a5776877b1d176dd79e3e89", - "check": "mapping-deletion", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol.0.5.16.MappingDeletionDetection.json b/tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol.0.5.16.MappingDeletionDetection.json deleted file mode 100644 index 4a1d285b4..000000000 --- a/tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol.0.5.16.MappingDeletionDetection.json +++ /dev/null @@ -1,416 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "deleteSt", - "source_mapping": { - "start": 114, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteSt(Lib.MyStruct[1])" - } - }, - { - "type": "struct", - "name": "MyStruct", - "source_mapping": { - "start": 47, - "length": 61, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "node", - "name": "delete st[0]", - "source_mapping": { - "start": 175, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deleteSt", - "source_mapping": { - "start": 114, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteSt(Lib.MyStruct[1])" - } - } - } - } - ], - "description": "Lib.deleteSt(Lib.MyStruct[1]) (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#9-11) deletes Lib.MyStruct (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#5-7) which contains a mapping:\n\t-delete st[0] (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#10)\n", - "markdown": "[Lib.deleteSt(Lib.MyStruct[1])](tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#L9-L11) deletes [Lib.MyStruct](tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#L5-L7) which contains a mapping:\n\t-[delete st[0]](tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#L9-L11", - "id": "25f78afdb82c912359dfe1e6ae5b252658ae3fcea89e6573b41133d9ee74485a", - "check": "mapping-deletion", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "deleteBalance", - "source_mapping": { - "start": 595, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 199, - "length": 866, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteBalance(uint256)" - } - }, - { - "type": "struct", - "name": "BalancesStruct", - "source_mapping": { - "start": 228, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 199, - "length": 866, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "node", - "name": "delete stackBalance[idx]", - "source_mapping": { - "start": 701, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deleteBalance", - "source_mapping": { - "start": 595, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 199, - "length": 866, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteBalance(uint256)" - } - } - } - } - ], - "description": "Balances.deleteBalance(uint256) (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#29-32) deletes Balances.BalancesStruct (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#17-20) which contains a mapping:\n\t-delete stackBalance[idx] (tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#31)\n", - "markdown": "[Balances.deleteBalance(uint256)](tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#L29-L32) deletes [Balances.BalancesStruct](tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#L17-L20) which contains a mapping:\n\t-[delete stackBalance[idx]](tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#L31)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/mapping-deletion/0.5.16/MappingDeletion.sol#L29-L32", - "id": "e32795b53dcf7a1a5f2c10b588df584da1907d195e9ed3c48f020813ccd01d61", - "check": "mapping-deletion", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol.0.6.11.MappingDeletionDetection.json b/tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol.0.6.11.MappingDeletionDetection.json deleted file mode 100644 index 9bbd114f7..000000000 --- a/tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol.0.6.11.MappingDeletionDetection.json +++ /dev/null @@ -1,416 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "deleteBalance", - "source_mapping": { - "start": 595, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 199, - "length": 866, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteBalance(uint256)" - } - }, - { - "type": "struct", - "name": "BalancesStruct", - "source_mapping": { - "start": 228, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 199, - "length": 866, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "node", - "name": "delete stackBalance[idx]", - "source_mapping": { - "start": 701, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deleteBalance", - "source_mapping": { - "start": 595, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 199, - "length": 866, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteBalance(uint256)" - } - } - } - } - ], - "description": "Balances.deleteBalance(uint256) (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#29-32) deletes Balances.BalancesStruct (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#17-20) which contains a mapping:\n\t-delete stackBalance[idx] (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#31)\n", - "markdown": "[Balances.deleteBalance(uint256)](tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#L29-L32) deletes [Balances.BalancesStruct](tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#L17-L20) which contains a mapping:\n\t-[delete stackBalance[idx]](tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#L31)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#L29-L32", - "id": "36e71dab3809852d2405eb28b790c702876d1368c5a8c2c5ca1a601bab67d3b8", - "check": "mapping-deletion", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "deleteSt", - "source_mapping": { - "start": 114, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteSt(Lib.MyStruct[1])" - } - }, - { - "type": "struct", - "name": "MyStruct", - "source_mapping": { - "start": 47, - "length": 61, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "node", - "name": "delete st[0]", - "source_mapping": { - "start": 175, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deleteSt", - "source_mapping": { - "start": 114, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteSt(Lib.MyStruct[1])" - } - } - } - } - ], - "description": "Lib.deleteSt(Lib.MyStruct[1]) (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#9-11) deletes Lib.MyStruct (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#5-7) which contains a mapping:\n\t-delete st[0] (tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#10)\n", - "markdown": "[Lib.deleteSt(Lib.MyStruct[1])](tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#L9-L11) deletes [Lib.MyStruct](tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#L5-L7) which contains a mapping:\n\t-[delete st[0]](tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/mapping-deletion/0.6.11/MappingDeletion.sol#L9-L11", - "id": "62c206de50149e2a37cc89a4737e53aafba3cdec86127e87633d3e7e2ba3fc65", - "check": "mapping-deletion", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol.0.7.6.MappingDeletionDetection.json b/tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol.0.7.6.MappingDeletionDetection.json deleted file mode 100644 index b77765921..000000000 --- a/tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol.0.7.6.MappingDeletionDetection.json +++ /dev/null @@ -1,416 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "deleteBalance", - "source_mapping": { - "start": 595, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 199, - "length": 866, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteBalance(uint256)" - } - }, - { - "type": "struct", - "name": "BalancesStruct", - "source_mapping": { - "start": 228, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 199, - "length": 866, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "node", - "name": "delete stackBalance[idx]", - "source_mapping": { - "start": 701, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deleteBalance", - "source_mapping": { - "start": 595, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Balances", - "source_mapping": { - "start": 199, - "length": 866, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteBalance(uint256)" - } - } - } - } - ], - "description": "Balances.deleteBalance(uint256) (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#29-32) deletes Balances.BalancesStruct (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#17-20) which contains a mapping:\n\t-delete stackBalance[idx] (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#31)\n", - "markdown": "[Balances.deleteBalance(uint256)](tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#L29-L32) deletes [Balances.BalancesStruct](tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#L17-L20) which contains a mapping:\n\t-[delete stackBalance[idx]](tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#L31)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#L29-L32", - "id": "be5ede96c6fee54dfce4422097c8fedb873edf56795b146bda5a64bf4dda87d3", - "check": "mapping-deletion", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "deleteSt", - "source_mapping": { - "start": 114, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteSt(Lib.MyStruct[1])" - } - }, - { - "type": "struct", - "name": "MyStruct", - "source_mapping": { - "start": 47, - "length": 61, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "node", - "name": "delete st[0]", - "source_mapping": { - "start": 175, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deleteSt", - "source_mapping": { - "start": 114, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Lib", - "source_mapping": { - "start": 29, - "length": 168, - "filename_relative": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deleteSt(Lib.MyStruct[1])" - } - } - } - } - ], - "description": "Lib.deleteSt(Lib.MyStruct[1]) (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#9-11) deletes Lib.MyStruct (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#5-7) which contains a mapping:\n\t-delete st[0] (tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#10)\n", - "markdown": "[Lib.deleteSt(Lib.MyStruct[1])](tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#L9-L11) deletes [Lib.MyStruct](tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#L5-L7) which contains a mapping:\n\t-[delete st[0]](tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/mapping-deletion/0.7.6/MappingDeletion.sol#L9-L11", - "id": "e60cb56bfbbca04e075ecc29366ae58fcdd9ee4dc865f8b0094f7ea5394b92a0", - "check": "mapping-deletion", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol.0.4.25.MissingInheritance.json b/tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol.0.4.25.MissingInheritance.json deleted file mode 100644 index a3dc88481..000000000 --- a/tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol.0.4.25.MissingInheritance.json +++ /dev/null @@ -1,56 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Something", - "source_mapping": { - "start": 68, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "contract", - "name": "ISomething", - "source_mapping": { - "start": 0, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "Something (tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol#5-10) should inherit from ISomething (tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol#1-3)\n", - "markdown": "[Something](tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol#L5-L10) should inherit from [ISomething](tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol#L1-L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-inheritance/0.4.25/unimplemented_interface.sol#L5-L10", - "id": "58962dc72a6c49524a027e8e1615ab92be30f1a0f5ef0eb4a029204687159649", - "check": "missing-inheritance", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol.0.5.16.MissingInheritance.json b/tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol.0.5.16.MissingInheritance.json deleted file mode 100644 index 85d422120..000000000 --- a/tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol.0.5.16.MissingInheritance.json +++ /dev/null @@ -1,56 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Something", - "source_mapping": { - "start": 68, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "contract", - "name": "ISomething", - "source_mapping": { - "start": 0, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "Something (tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol#5-10) should inherit from ISomething (tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol#1-3)\n", - "markdown": "[Something](tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol#L5-L10) should inherit from [ISomething](tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol#L1-L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-inheritance/0.5.16/unimplemented_interface.sol#L5-L10", - "id": "58962dc72a6c49524a027e8e1615ab92be30f1a0f5ef0eb4a029204687159649", - "check": "missing-inheritance", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol.0.6.11.MissingInheritance.json b/tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol.0.6.11.MissingInheritance.json deleted file mode 100644 index 5c992d241..000000000 --- a/tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol.0.6.11.MissingInheritance.json +++ /dev/null @@ -1,56 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Something", - "source_mapping": { - "start": 68, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "contract", - "name": "ISomething", - "source_mapping": { - "start": 0, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "Something (tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol#5-10) should inherit from ISomething (tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol#1-3)\n", - "markdown": "[Something](tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol#L5-L10) should inherit from [ISomething](tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol#L1-L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-inheritance/0.6.11/unimplemented_interface.sol#L5-L10", - "id": "58962dc72a6c49524a027e8e1615ab92be30f1a0f5ef0eb4a029204687159649", - "check": "missing-inheritance", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol.0.7.6.MissingInheritance.json b/tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol.0.7.6.MissingInheritance.json deleted file mode 100644 index ff13fef9e..000000000 --- a/tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol.0.7.6.MissingInheritance.json +++ /dev/null @@ -1,56 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Something", - "source_mapping": { - "start": 68, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "contract", - "name": "ISomething", - "source_mapping": { - "start": 0, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "Something (tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol#5-10) should inherit from ISomething (tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol#1-3)\n", - "markdown": "[Something](tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol#L5-L10) should inherit from [ISomething](tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol#L1-L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-inheritance/0.7.6/unimplemented_interface.sol#L5-L10", - "id": "58962dc72a6c49524a027e8e1615ab92be30f1a0f5ef0eb4a029204687159649", - "check": "missing-inheritance", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol.0.4.25.MissingZeroAddressValidation.json b/tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol.0.4.25.MissingZeroAddressValidation.json deleted file mode 100644 index 528c5c312..000000000 --- a/tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol.0.4.25.MissingZeroAddressValidation.json +++ /dev/null @@ -1,1472 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 706, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 22, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4_call", - "source_mapping": { - "start": 687, - "length": 112, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4_call(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.call.value(msg.value)()", - "source_mapping": { - "start": 740, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 5, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4_call", - "source_mapping": { - "start": 687, - "length": 112, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4_call(address)" - } - } - } - } - ], - "description": "C.bad4_call(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#28) lacks a zero-check on :\n\t\t- addr.call.value(msg.value)() (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#29)\n", - "markdown": "[C.bad4_call(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L28) lacks a zero-check on :\n\t\t- [addr.call.value(msg.value)()](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L29)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L28", - "id": "544803ccc40b7173048033bb584b82acf387458db7d524dd0b19304d734b5da0", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 511, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 26, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_transfer", - "source_mapping": { - "start": 488, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_transfer(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.transfer(msg.value)", - "source_mapping": { - "start": 545, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_transfer", - "source_mapping": { - "start": 488, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_transfer(address)" - } - } - } - } - ], - "description": "C.bad3_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#23) lacks a zero-check on :\n\t\t- addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#24)\n", - "markdown": "[C.bad3_transfer(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L23) lacks a zero-check on :\n\t\t- [addr.transfer(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L23", - "id": "905cc3a02bbc7be7f1c14c8f4c825dfb00d1ab3a5090f4ad447c10422b443a04", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 393, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 26, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_transfer", - "source_mapping": { - "start": 370, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2_transfer(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.transfer(msg.value)", - "source_mapping": { - "start": 427, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_transfer", - "source_mapping": { - "start": 370, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2_transfer(address)" - } - } - } - } - ], - "description": "C.bad2_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#19) lacks a zero-check on :\n\t\t- addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#20)\n", - "markdown": "[C.bad2_transfer(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L19) lacks a zero-check on :\n\t\t- [addr.transfer(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L19", - "id": "9568826f86b5efbcef2979632d0817fc45c2af86306f82169a179e9f79b44a57", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "new_owner", - "source_mapping": { - "start": 149, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 27, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0_set_owner", - "source_mapping": { - "start": 125, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0_set_owner(address)" - } - } - } - }, - { - "type": "node", - "name": "owner = new_owner", - "source_mapping": { - "start": 188, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0_set_owner", - "source_mapping": { - "start": 125, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0_set_owner(address)" - } - } - } - } - ], - "description": "C.bad0_set_owner(address).new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#10) lacks a zero-check on :\n\t\t- owner = new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#11)\n", - "markdown": "[C.bad0_set_owner(address).new_owner](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L10) lacks a zero-check on :\n\t\t- [owner = new_owner](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L10", - "id": "b3ed5b509e79b10fb11c06792bc1bbea4110fee55583a43a38d79d2048c613f1", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 256, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 22, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 129, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.send(msg.value)", - "source_mapping": { - "start": 290, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 129, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.send(msg.value)", - "source_mapping": { - "start": 340, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 129, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 1977, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - } - ], - "description": "C.bad1_send(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#14) lacks a zero-check on :\n\t\t- addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#15)\n\t\t- addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#16)\n", - "markdown": "[C.bad1_send(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L14) lacks a zero-check on :\n\t\t- [addr.send(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L15)\n\t\t- [addr.send(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.4.25/missing_zero_address_validation.sol#L14", - "id": "fa7268ec4d72f167f61bdc17b887b27ac333d895b5a3827fcd7bfca395d349f4", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol.0.5.16.MissingZeroAddressValidation.json b/tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol.0.5.16.MissingZeroAddressValidation.json deleted file mode 100644 index 9e048e04a..000000000 --- a/tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol.0.5.16.MissingZeroAddressValidation.json +++ /dev/null @@ -1,1472 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 401, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 26, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_transfer", - "source_mapping": { - "start": 378, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2_transfer(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.transfer(msg.value)", - "source_mapping": { - "start": 443, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_transfer", - "source_mapping": { - "start": 378, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2_transfer(address)" - } - } - } - } - ], - "description": "C.bad2_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#19) lacks a zero-check on :\n\t\t- addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#20)\n", - "markdown": "[C.bad2_transfer(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L19) lacks a zero-check on :\n\t\t- [addr.transfer(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L19", - "id": "29db16277296360f7c637e16b59118e50ab70e3122f09c006f234dbf93ea13f6", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 730, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 22, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4_call", - "source_mapping": { - "start": 711, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4_call(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.call.value(msg.value)()", - "source_mapping": { - "start": 772, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 5, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4_call", - "source_mapping": { - "start": 711, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4_call(address)" - } - } - } - } - ], - "description": "C.bad4_call(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#28) lacks a zero-check on :\n\t\t- addr.call.value(msg.value)() (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#29)\n", - "markdown": "[C.bad4_call(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L28) lacks a zero-check on :\n\t\t- [addr.call.value(msg.value)()](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L29)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L28", - "id": "9c6ff3aef7b83b809a20128ba0e37b41e372536a7c00f5102f47dd2108e0c637", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "new_owner", - "source_mapping": { - "start": 149, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 27, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0_set_owner", - "source_mapping": { - "start": 125, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0_set_owner(address)" - } - } - } - }, - { - "type": "node", - "name": "owner = new_owner", - "source_mapping": { - "start": 188, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0_set_owner", - "source_mapping": { - "start": 125, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0_set_owner(address)" - } - } - } - } - ], - "description": "C.bad0_set_owner(address).new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#10) lacks a zero-check on :\n\t\t- owner = new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#11)\n", - "markdown": "[C.bad0_set_owner(address).new_owner](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L10) lacks a zero-check on :\n\t\t- [owner = new_owner](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L10", - "id": "b180df9baff938a7cbf352a98d3f08ef7b28b8988f646501a82d249385277dde", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 527, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 26, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_transfer", - "source_mapping": { - "start": 504, - "length": 203, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_transfer(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.transfer(msg.value)", - "source_mapping": { - "start": 569, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_transfer", - "source_mapping": { - "start": 504, - "length": 203, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_transfer(address)" - } - } - } - } - ], - "description": "C.bad3_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#23) lacks a zero-check on :\n\t\t- addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#24)\n", - "markdown": "[C.bad3_transfer(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L23) lacks a zero-check on :\n\t\t- [addr.transfer(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L23", - "id": "c84a2e53313b2eeb0587d13197812e88d1bed8509570ec333ebf21c9b0aed68d", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 256, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 22, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.send(msg.value)", - "source_mapping": { - "start": 298, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.send(msg.value)", - "source_mapping": { - "start": 348, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - } - ], - "description": "C.bad1_send(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#14) lacks a zero-check on :\n\t\t- addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#15)\n\t\t- addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#16)\n", - "markdown": "[C.bad1_send(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L14) lacks a zero-check on :\n\t\t- [addr.send(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L15)\n\t\t- [addr.send(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.5.16/missing_zero_address_validation.sol#L14", - "id": "de1c8c305b18cb8b7a1ed68aad59db3e1b058cff9d003bee9f6b40aaf9f0d859", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol.0.6.11.MissingZeroAddressValidation.json b/tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol.0.6.11.MissingZeroAddressValidation.json deleted file mode 100644 index 688a270f4..000000000 --- a/tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol.0.6.11.MissingZeroAddressValidation.json +++ /dev/null @@ -1,1472 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 401, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 26, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_transfer", - "source_mapping": { - "start": 378, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2_transfer(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.transfer(msg.value)", - "source_mapping": { - "start": 443, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_transfer", - "source_mapping": { - "start": 378, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2_transfer(address)" - } - } - } - } - ], - "description": "C.bad2_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#19) lacks a zero-check on :\n\t\t- addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#20)\n", - "markdown": "[C.bad2_transfer(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L19) lacks a zero-check on :\n\t\t- [addr.transfer(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L19", - "id": "442dd9d8ab9bcdac1d8ff21404ec8b21d517cfb1601b16abf969175ef0c2be5b", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "new_owner", - "source_mapping": { - "start": 149, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 27, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0_set_owner", - "source_mapping": { - "start": 125, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0_set_owner(address)" - } - } - } - }, - { - "type": "node", - "name": "owner = new_owner", - "source_mapping": { - "start": 188, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0_set_owner", - "source_mapping": { - "start": 125, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0_set_owner(address)" - } - } - } - } - ], - "description": "C.bad0_set_owner(address).new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#10) lacks a zero-check on :\n\t\t- owner = new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#11)\n", - "markdown": "[C.bad0_set_owner(address).new_owner](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L10) lacks a zero-check on :\n\t\t- [owner = new_owner](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L10", - "id": "4c88f4398c0c3744179e7766d1d37259cd78e17d4295fa26aeb4b857aee5eea1", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 256, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 22, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.send(msg.value)", - "source_mapping": { - "start": 298, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.send(msg.value)", - "source_mapping": { - "start": 348, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - } - ], - "description": "C.bad1_send(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#14) lacks a zero-check on :\n\t\t- addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#15)\n\t\t- addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#16)\n", - "markdown": "[C.bad1_send(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L14) lacks a zero-check on :\n\t\t- [addr.send(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L15)\n\t\t- [addr.send(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L14", - "id": "e2713744ad519d45431324a0d9c81e886bcbfc85d09518af215830c73451ff41", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 730, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 22, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4_call", - "source_mapping": { - "start": 711, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4_call(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.call.value(msg.value)()", - "source_mapping": { - "start": 772, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 5, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4_call", - "source_mapping": { - "start": 711, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4_call(address)" - } - } - } - } - ], - "description": "C.bad4_call(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#28) lacks a zero-check on :\n\t\t- addr.call.value(msg.value)() (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#29)\n", - "markdown": "[C.bad4_call(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L28) lacks a zero-check on :\n\t\t- [addr.call.value(msg.value)()](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L29)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L28", - "id": "e8a430e2c04153f1b71097d5bfd3889508325fa8eac71d27557338053138382b", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 527, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 26, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_transfer", - "source_mapping": { - "start": 504, - "length": 203, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_transfer(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.transfer(msg.value)", - "source_mapping": { - "start": 569, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_transfer", - "source_mapping": { - "start": 504, - "length": 203, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_transfer(address)" - } - } - } - } - ], - "description": "C.bad3_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#23) lacks a zero-check on :\n\t\t- addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#24)\n", - "markdown": "[C.bad3_transfer(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L23) lacks a zero-check on :\n\t\t- [addr.transfer(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.6.11/missing_zero_address_validation.sol#L23", - "id": "f526bdc00d5c7d9ac356dd58801eb48db5fd6f3bdfc28812e0a183cd9cfa3fd6", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol.0.7.6.MissingZeroAddressValidation.json b/tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol.0.7.6.MissingZeroAddressValidation.json deleted file mode 100644 index afaceab84..000000000 --- a/tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol.0.7.6.MissingZeroAddressValidation.json +++ /dev/null @@ -1,1472 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 256, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 22, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.send(msg.value)", - "source_mapping": { - "start": 298, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.send(msg.value)", - "source_mapping": { - "start": 348, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1_send", - "source_mapping": { - "start": 237, - "length": 137, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1_send(address)" - } - } - } - } - ], - "description": "C.bad1_send(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#14) lacks a zero-check on :\n\t\t- addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#15)\n\t\t- addr.send(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#16)\n", - "markdown": "[C.bad1_send(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L14) lacks a zero-check on :\n\t\t- [addr.send(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L15)\n\t\t- [addr.send(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L14", - "id": "2dfc801d756c1571f9e02d3506682b5712639e0223155e04545a3ee91d7c9ef8", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 527, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 26, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_transfer", - "source_mapping": { - "start": 504, - "length": 203, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_transfer(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.transfer(msg.value)", - "source_mapping": { - "start": 569, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3_transfer", - "source_mapping": { - "start": 504, - "length": 203, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3_transfer(address)" - } - } - } - } - ], - "description": "C.bad3_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#23) lacks a zero-check on :\n\t\t- addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#24)\n", - "markdown": "[C.bad3_transfer(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L23) lacks a zero-check on :\n\t\t- [addr.transfer(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L23", - "id": "5afb93bf3ba0c95d60e0f21547c13aba7fe5b7f22df69d8405c8c701d7e7fae7", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 730, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 22, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4_call", - "source_mapping": { - "start": 711, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4_call(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.call{value: msg.value}()", - "source_mapping": { - "start": 772, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 5, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4_call", - "source_mapping": { - "start": 711, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4_call(address)" - } - } - } - } - ], - "description": "C.bad4_call(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#28) lacks a zero-check on :\n\t\t- addr.call{value: msg.value}() (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#29)\n", - "markdown": "[C.bad4_call(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L28) lacks a zero-check on :\n\t\t- [addr.call{value: msg.value}()](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L29)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L28", - "id": "a7cc8d499df4abc336e824829e21282bf675383376d3a8503991fb66c158fb33", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "addr", - "source_mapping": { - "start": 401, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 26, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_transfer", - "source_mapping": { - "start": 378, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2_transfer(address)" - } - } - } - }, - { - "type": "node", - "name": "addr.transfer(msg.value)", - "source_mapping": { - "start": 443, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_transfer", - "source_mapping": { - "start": 378, - "length": 122, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 19, - 20, - 21 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2_transfer(address)" - } - } - } - } - ], - "description": "C.bad2_transfer(address).addr (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#19) lacks a zero-check on :\n\t\t- addr.transfer(msg.value) (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#20)\n", - "markdown": "[C.bad2_transfer(address).addr](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L19) lacks a zero-check on :\n\t\t- [addr.transfer(msg.value)](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L19", - "id": "d2328d61a9a38239f4d1b59c12b409f399408cd478a6603207e9fe645a13d03f", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "new_owner", - "source_mapping": { - "start": 149, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 27, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0_set_owner", - "source_mapping": { - "start": 125, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0_set_owner(address)" - } - } - } - }, - { - "type": "node", - "name": "owner = new_owner", - "source_mapping": { - "start": 188, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0_set_owner", - "source_mapping": { - "start": 125, - "length": 108, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 2049, - "filename_relative": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0_set_owner(address)" - } - } - } - } - ], - "description": "C.bad0_set_owner(address).new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#10) lacks a zero-check on :\n\t\t- owner = new_owner (tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#11)\n", - "markdown": "[C.bad0_set_owner(address).new_owner](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L10) lacks a zero-check on :\n\t\t- [owner = new_owner](tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/missing-zero-check/0.7.6/missing_zero_address_validation.sol#L10", - "id": "fa1b673ca923bd1e66e6af3aacc82cef33b264cebf753032dbee23be1f62645e", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol.0.4.25.MsgValueInLoop.json b/tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol.0.4.25.MsgValueInLoop.json deleted file mode 100644 index 430a11319..000000000 --- a/tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol.0.4.25.MsgValueInLoop.json +++ /dev/null @@ -1,514 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - }, - { - "type": "node", - "name": "balances[receivers[i]] += msg.value", - "source_mapping": { - "start": 188, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - } - } - } - ], - "description": "C.bad(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#5-9) use msg.value in a loop: balances[receivers[i]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#7)\n", - "markdown": "[C.bad(address[])](tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#L5-L9) use msg.value in a loop: [balances[receivers[i]] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#L5-L9", - "id": "3874d3c7006d6d7671320db653fcc2dd0ef0fd9c1337c4c509670839ad4046a2", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 515, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - }, - { - "type": "node", - "name": "balances[receivers[j]] += msg.value", - "source_mapping": { - "start": 694, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 17, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 515, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - } - } - } - ], - "description": "C.bad3(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#21-27) use msg.value in a loop: balances[receivers[j]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#24)\n", - "markdown": "[C.bad3(address[])](tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#L21-L27) use msg.value in a loop: [balances[receivers[j]] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#L21-L27", - "id": "3a3cc8fae7c0d90880077b656ffaca0ddfd90bf9fc0763cd3d17e6151e935541", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 425, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address)" - } - }, - { - "type": "node", - "name": "balances[a] += msg.value", - "source_mapping": { - "start": 478, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 425, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address)" - } - } - } - } - ], - "description": "C.bad2_internal(address) (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#17-19) use msg.value in a loop: balances[a] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#18)\n", - "markdown": "[C.bad2_internal(address)](tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#L17-L19) use msg.value in a loop: [balances[a] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.4.25/msg_value_loop.sol#L17-L19", - "id": "4bffc492aeda82de77a2d9ab055133609e03c430266919d983a7e46b85e4eeba", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol.0.5.16.MsgValueInLoop.json b/tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol.0.5.16.MsgValueInLoop.json deleted file mode 100644 index 968ded84f..000000000 --- a/tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol.0.5.16.MsgValueInLoop.json +++ /dev/null @@ -1,514 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 515, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - }, - { - "type": "node", - "name": "balances[receivers[j]] += msg.value", - "source_mapping": { - "start": 694, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 17, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 515, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - } - } - } - ], - "description": "C.bad3(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#21-27) use msg.value in a loop: balances[receivers[j]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#24)\n", - "markdown": "[C.bad3(address[])](tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#L21-L27) use msg.value in a loop: [balances[receivers[j]] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#L21-L27", - "id": "1b4d9d1f725152eee13a5269b97a8443297f7f598051bfc4f67e93e02c12f165", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 425, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address)" - } - }, - { - "type": "node", - "name": "balances[a] += msg.value", - "source_mapping": { - "start": 478, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 425, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address)" - } - } - } - } - ], - "description": "C.bad2_internal(address) (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#17-19) use msg.value in a loop: balances[a] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#18)\n", - "markdown": "[C.bad2_internal(address)](tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#L17-L19) use msg.value in a loop: [balances[a] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#L17-L19", - "id": "406d8b51b71b115c08b097999756740459200deeb3c12901b301f32611f1b330", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - }, - { - "type": "node", - "name": "balances[receivers[i]] += msg.value", - "source_mapping": { - "start": 188, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - } - } - } - ], - "description": "C.bad(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#5-9) use msg.value in a loop: balances[receivers[i]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#7)\n", - "markdown": "[C.bad(address[])](tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#L5-L9) use msg.value in a loop: [balances[receivers[i]] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.5.16/msg_value_loop.sol#L5-L9", - "id": "8e4fef885c77d029459f90c7aff4b459dce05adc08b96fb80ce821611c9280d6", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol.0.6.11.MsgValueInLoop.json b/tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol.0.6.11.MsgValueInLoop.json deleted file mode 100644 index 01e99cd49..000000000 --- a/tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol.0.6.11.MsgValueInLoop.json +++ /dev/null @@ -1,514 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 425, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address)" - } - }, - { - "type": "node", - "name": "balances[a] += msg.value", - "source_mapping": { - "start": 478, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 425, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address)" - } - } - } - } - ], - "description": "C.bad2_internal(address) (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#17-19) use msg.value in a loop: balances[a] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#18)\n", - "markdown": "[C.bad2_internal(address)](tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#L17-L19) use msg.value in a loop: [balances[a] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#L17-L19", - "id": "097df3a5df3bcbc6783595f78fab5791b2cd9413acabcb0aa5694ff7d4309261", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - }, - { - "type": "node", - "name": "balances[receivers[i]] += msg.value", - "source_mapping": { - "start": 188, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - } - } - } - ], - "description": "C.bad(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#5-9) use msg.value in a loop: balances[receivers[i]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#7)\n", - "markdown": "[C.bad(address[])](tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#L5-L9) use msg.value in a loop: [balances[receivers[i]] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#L5-L9", - "id": "3a08148f1a55375f90c551e5841d47f4846720e07afa57707753a76e727adef7", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 515, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - }, - { - "type": "node", - "name": "balances[receivers[j]] += msg.value", - "source_mapping": { - "start": 694, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 17, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 515, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - } - } - } - ], - "description": "C.bad3(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#21-27) use msg.value in a loop: balances[receivers[j]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#24)\n", - "markdown": "[C.bad3(address[])](tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#L21-L27) use msg.value in a loop: [balances[receivers[j]] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.6.11/msg_value_loop.sol#L21-L27", - "id": "78e8f933f8386fd2534f6fcf4908da3ac17d4362c1e605f31471eee0cc6ca833", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol.0.7.6.MsgValueInLoop.json b/tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol.0.7.6.MsgValueInLoop.json deleted file mode 100644 index 21f59fbda..000000000 --- a/tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol.0.7.6.MsgValueInLoop.json +++ /dev/null @@ -1,514 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 425, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address)" - } - }, - { - "type": "node", - "name": "balances[a] += msg.value", - "source_mapping": { - "start": 478, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 425, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address)" - } - } - } - } - ], - "description": "C.bad2_internal(address) (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#17-19) use msg.value in a loop: balances[a] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#18)\n", - "markdown": "[C.bad2_internal(address)](tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#L17-L19) use msg.value in a loop: [balances[a] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#L17-L19", - "id": "565d76d19b082213e2aa31539b92593aede0e05d05828605c676e92609fbf8a2", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 515, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - }, - { - "type": "node", - "name": "balances[receivers[j]] += msg.value", - "source_mapping": { - "start": 694, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 17, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 515, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - } - } - } - ], - "description": "C.bad3(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#21-27) use msg.value in a loop: balances[receivers[j]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#24)\n", - "markdown": "[C.bad3(address[])](tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#L21-L27) use msg.value in a loop: [balances[receivers[j]] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#L21-L27", - "id": "a711edee77437e7c35f4fa394c4fab613c39c581565149c7c82539481218e16c", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - }, - { - "type": "node", - "name": "balances[receivers[i]] += msg.value", - "source_mapping": { - "start": 188, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - } - } - } - ], - "description": "C.bad(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#5-9) use msg.value in a loop: balances[receivers[i]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#7)\n", - "markdown": "[C.bad(address[])](tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#L5-L9) use msg.value in a loop: [balances[receivers[i]] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.7.6/msg_value_loop.sol#L5-L9", - "id": "fe6437a4c09b3dec514d996c7f6668d90b5ca1a73a8480d553e484952c24d34b", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol.0.8.0.MsgValueInLoop.json b/tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol.0.8.0.MsgValueInLoop.json deleted file mode 100644 index 46158ce52..000000000 --- a/tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol.0.8.0.MsgValueInLoop.json +++ /dev/null @@ -1,514 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 425, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address)" - } - }, - { - "type": "node", - "name": "balances[a] += msg.value", - "source_mapping": { - "start": 478, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2_internal", - "source_mapping": { - "start": 425, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2_internal(address)" - } - } - } - } - ], - "description": "C.bad2_internal(address) (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#17-19) use msg.value in a loop: balances[a] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#18)\n", - "markdown": "[C.bad2_internal(address)](tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#L17-L19) use msg.value in a loop: [balances[a] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#L17-L19", - "id": "093432027e9375993ba8dd36a6e36399dd18201c491d84b7e8810d06d4837141", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 515, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - }, - { - "type": "node", - "name": "balances[receivers[j]] += msg.value", - "source_mapping": { - "start": 694, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 17, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 515, - "length": 245, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address[])" - } - } - } - } - ], - "description": "C.bad3(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#21-27) use msg.value in a loop: balances[receivers[j]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#24)\n", - "markdown": "[C.bad3(address[])](tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#L21-L27) use msg.value in a loop: [balances[receivers[j]] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#L21-L27", - "id": "7028c125d1fea9be89c5b58a4bd84c0f92c8c69ac05389c95f9a68d145130861", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - }, - { - "type": "node", - "name": "balances[receivers[i]] += msg.value", - "source_mapping": { - "start": 188, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 13, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 61, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 763, - "filename_relative": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad(address[])" - } - } - } - } - ], - "description": "C.bad(address[]) (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#5-9) use msg.value in a loop: balances[receivers[i]] += msg.value (tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#7)\n", - "markdown": "[C.bad(address[])](tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#L5-L9) use msg.value in a loop: [balances[receivers[i]] += msg.value](tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/msg-value-loop/0.8.0/msg_value_loop.sol#L5-L9", - "id": "fb7f5216a245e3c793c726ea4bbfbf4e2b6a769f99304efee6f8e2ab505280c3", - "check": "msg-value-loop", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol.0.4.22.MultipleConstructorSchemes.json b/tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol.0.4.22.MultipleConstructorSchemes.json deleted file mode 100644 index ff4e9a248..000000000 --- a/tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol.0.4.22.MultipleConstructorSchemes.json +++ /dev/null @@ -1,149 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 29, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - }, - { - "type": "function", - "name": "A", - "source_mapping": { - "start": 77, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "A()" - } - } - ], - "description": "A (tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol#1-14) contains multiple constructors in the same contract:\n\t- A.constructor() (tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol#3-5)\n\t- A.A() (tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol#6-8)\n", - "markdown": "[A](tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol#L1-L14) contains multiple constructors in the same contract:\n\t- [A.constructor()](tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol#L3-L5)\n\t- [A.A()](tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol#L6-L8)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/multiple-constructors/0.4.22/multiple_constructor_schemes.sol#L1-L14", - "id": "704cdb1c05e919913c22befaf077b9585bc75e31b5033fa46c930ad82dc6852e", - "check": "multiple-constructors", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol.0.4.25.NamingConvention.json b/tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol.0.4.25.NamingConvention.json deleted file mode 100644 index b89371032..000000000 --- a/tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol.0.4.25.NamingConvention.json +++ /dev/null @@ -1,1372 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "struct", - "name": "test", - "source_mapping": { - "start": 229, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "structure", - "convention": "CapWords" - } - } - ], - "description": "Struct naming.test (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#14-16) is not in CapWords\n", - "markdown": "Struct [naming.test](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L14-L16) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L14-L16", - "id": "0ef3ea412cb30b1f0df5fa2af4a7a06e2bf0373fae0770fd9e301aed12c209cf", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "I", - "source_mapping": { - "start": 932, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#69) is not in mixedCase\n", - "markdown": "Variable [T.I](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L69) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L69", - "id": "12df12bbda2059673d356e5c32ec4e8a037a3821c9fa42b831a9144437cb79f9", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "I", - "source_mapping": { - "start": 932, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#69) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.I](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L69) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L69", - "id": "2ac65aa5bb560436d64f16e164aaab90dbbf38d683bfdfdfb42eeb225fc51759", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "O", - "source_mapping": { - "start": 916, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#68) is not in mixedCase\n", - "markdown": "Variable [T.O](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L68) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L68", - "id": "2de986dda91f7c7e3a51470aa43abfa2c6fd363b742d1bbd38d5287ae179b83a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "Var_One", - "source_mapping": { - "start": 185, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable naming.Var_One (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#11) is not in mixedCase\n", - "markdown": "Variable [naming.Var_One](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L11) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L11", - "id": "34b7c817201b3f3086fc3541f140898d9e9aabe999b1c0a6ef8639ec04351f26", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "MY_other_CONSTANT", - "source_mapping": { - "start": 143, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable_constant", - "convention": "UPPER_CASE_WITH_UNDERSCORES" - } - } - ], - "description": "Constant naming.MY_other_CONSTANT (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#9) is not in UPPER_CASE_WITH_UNDERSCORES\n", - "markdown": "Constant [naming.MY_other_CONSTANT](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L9) is not in UPPER_CASE_WITH_UNDERSCORES\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L9", - "id": "596c2e8064f8f2df55cd5c878eb59c0a74ac7f20719c420d8af307f2431a1a90", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - }, - "additional_fields": { - "target": "contract", - "convention": "CapWords" - } - } - ], - "description": "Contract naming (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#3-48) is not in CapWords\n", - "markdown": "Contract [naming](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L3-L48) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L3-L48", - "id": "7247d550fb327e3aeb21c82714137e5b45a7e9eeaa6a1bc878102c8081033f85", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "enum", - "name": "numbers", - "source_mapping": { - "start": 79, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "enum", - "convention": "CapWords" - } - } - ], - "description": "Enum naming.numbers (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#6) is not in CapWords\n", - "markdown": "Enum [naming.numbers](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L6) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L6", - "id": "7c87b076ea2865060182cf11d155caadb1dcea415ccce0ca8563a74a01611fc2", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_used", - "source_mapping": { - "start": 794, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 59 - ], - "starting_column": 33, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 766, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 59, - 60 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(uint256,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#59) is not in mixedCase\n", - "markdown": "Parameter [T.test(uint256,uint256)._used](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L59) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L59", - "id": "818962ad9f50f13eb87b5c7deade22666431945fb60055f572b38246cfbf311e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_myPublicVar", - "source_mapping": { - "start": 741, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 56 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#56) is not in mixedCase\n", - "markdown": "Variable [T._myPublicVar](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L56) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L56", - "id": "8acd53815786acad5b92b51366daf79182a67ab438daa41a6e1ec8a9601fa9a3", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "event_", - "source_mapping": { - "start": 335, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 5, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "event_(uint256)" - }, - "additional_fields": { - "target": "event", - "convention": "CapWords" - } - } - ], - "description": "Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#23) is not in CapWords\n", - "markdown": "Event [namingevent_(uint256)](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L23) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L23", - "id": "978ecf4a2c8b96d947e60f6601cf60d0e25e07ebe80ebbc37a7e7f279afd1405", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "O", - "source_mapping": { - "start": 916, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#68) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.O](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L68) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L68", - "id": "b341001642225c62eae76fef9879c80003b3134b3bc627d9b1912ebcd190304b", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "CantDo", - "source_mapping": { - "start": 591, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "CantDo()" - }, - "additional_fields": { - "target": "modifier", - "convention": "mixedCase" - } - } - ], - "description": "Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#41-43) is not in mixedCase\n", - "markdown": "Modifier [naming.CantDo()](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L41-L43) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L41-L43", - "id": "b8a754a01bd47127f00032cdedd0ade3e27e6543631d8f5bc9e44365ab732895", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "GetOne", - "source_mapping": { - "start": 440, - "length": 75, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "GetOne()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#30-33) is not in mixedCase\n", - "markdown": "Function [naming.GetOne()](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L30-L33) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L30-L33", - "id": "bf6f97d6a82b84284efdade52d01bd6112007426e2e88d1568190d63c5c4a049", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "l", - "source_mapping": { - "start": 900, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 67 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.l (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#67) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.l](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L67) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L67", - "id": "cb8668afe6ed1284c935ac95f8f9cb1407f96226fe741e7310d104d5f10a0fc6", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "Number2", - "source_mapping": { - "start": 551, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 35 - ], - "starting_column": 35, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setInt", - "source_mapping": { - "start": 521, - "length": 63, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setInt(uint256,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter naming.setInt(uint256,uint256).Number2 (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#35) is not in mixedCase\n", - "markdown": "Parameter [naming.setInt(uint256,uint256).Number2](tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L35) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#L35", - "id": "f03bff0b488524254e19ff7d688d34211cd2f29934e22417c9f1fa43fc4a08ad", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/naming-convention/0.4.25/no_warning_for_public_constants.sol.0.4.25.NamingConvention.json b/tests/e2e/detectors/test_data/naming-convention/0.4.25/no_warning_for_public_constants.sol.0.4.25.NamingConvention.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/naming-convention/0.4.25/no_warning_for_public_constants.sol.0.4.25.NamingConvention.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol.0.5.16.NamingConvention.json b/tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol.0.5.16.NamingConvention.json deleted file mode 100644 index 12a853f5c..000000000 --- a/tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol.0.5.16.NamingConvention.json +++ /dev/null @@ -1,1372 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "struct", - "name": "test", - "source_mapping": { - "start": 229, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "structure", - "convention": "CapWords" - } - } - ], - "description": "Struct naming.test (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#14-16) is not in CapWords\n", - "markdown": "Struct [naming.test](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L14-L16) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L14-L16", - "id": "0ef3ea412cb30b1f0df5fa2af4a7a06e2bf0373fae0770fd9e301aed12c209cf", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "I", - "source_mapping": { - "start": 932, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#69) is not in mixedCase\n", - "markdown": "Variable [T.I](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L69) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L69", - "id": "12df12bbda2059673d356e5c32ec4e8a037a3821c9fa42b831a9144437cb79f9", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "I", - "source_mapping": { - "start": 932, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#69) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.I](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L69) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L69", - "id": "2ac65aa5bb560436d64f16e164aaab90dbbf38d683bfdfdfb42eeb225fc51759", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "O", - "source_mapping": { - "start": 916, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#68) is not in mixedCase\n", - "markdown": "Variable [T.O](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L68) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L68", - "id": "2de986dda91f7c7e3a51470aa43abfa2c6fd363b742d1bbd38d5287ae179b83a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "Var_One", - "source_mapping": { - "start": 185, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable naming.Var_One (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#11) is not in mixedCase\n", - "markdown": "Variable [naming.Var_One](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L11) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L11", - "id": "34b7c817201b3f3086fc3541f140898d9e9aabe999b1c0a6ef8639ec04351f26", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "MY_other_CONSTANT", - "source_mapping": { - "start": 143, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable_constant", - "convention": "UPPER_CASE_WITH_UNDERSCORES" - } - } - ], - "description": "Constant naming.MY_other_CONSTANT (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#9) is not in UPPER_CASE_WITH_UNDERSCORES\n", - "markdown": "Constant [naming.MY_other_CONSTANT](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L9) is not in UPPER_CASE_WITH_UNDERSCORES\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L9", - "id": "596c2e8064f8f2df55cd5c878eb59c0a74ac7f20719c420d8af307f2431a1a90", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - }, - "additional_fields": { - "target": "contract", - "convention": "CapWords" - } - } - ], - "description": "Contract naming (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#3-48) is not in CapWords\n", - "markdown": "Contract [naming](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L3-L48) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L3-L48", - "id": "7247d550fb327e3aeb21c82714137e5b45a7e9eeaa6a1bc878102c8081033f85", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "enum", - "name": "numbers", - "source_mapping": { - "start": 79, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "enum", - "convention": "CapWords" - } - } - ], - "description": "Enum naming.numbers (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#6) is not in CapWords\n", - "markdown": "Enum [naming.numbers](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L6) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L6", - "id": "7c87b076ea2865060182cf11d155caadb1dcea415ccce0ca8563a74a01611fc2", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_used", - "source_mapping": { - "start": 794, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 59 - ], - "starting_column": 33, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 766, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 59, - 60 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(uint256,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#59) is not in mixedCase\n", - "markdown": "Parameter [T.test(uint256,uint256)._used](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L59) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L59", - "id": "818962ad9f50f13eb87b5c7deade22666431945fb60055f572b38246cfbf311e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_myPublicVar", - "source_mapping": { - "start": 741, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 56 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#56) is not in mixedCase\n", - "markdown": "Variable [T._myPublicVar](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L56) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L56", - "id": "8acd53815786acad5b92b51366daf79182a67ab438daa41a6e1ec8a9601fa9a3", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "event_", - "source_mapping": { - "start": 335, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 5, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "event_(uint256)" - }, - "additional_fields": { - "target": "event", - "convention": "CapWords" - } - } - ], - "description": "Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#23) is not in CapWords\n", - "markdown": "Event [namingevent_(uint256)](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L23) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L23", - "id": "978ecf4a2c8b96d947e60f6601cf60d0e25e07ebe80ebbc37a7e7f279afd1405", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "O", - "source_mapping": { - "start": 916, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#68) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.O](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L68) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L68", - "id": "b341001642225c62eae76fef9879c80003b3134b3bc627d9b1912ebcd190304b", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "CantDo", - "source_mapping": { - "start": 591, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "CantDo()" - }, - "additional_fields": { - "target": "modifier", - "convention": "mixedCase" - } - } - ], - "description": "Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#41-43) is not in mixedCase\n", - "markdown": "Modifier [naming.CantDo()](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L41-L43) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L41-L43", - "id": "b8a754a01bd47127f00032cdedd0ade3e27e6543631d8f5bc9e44365ab732895", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "GetOne", - "source_mapping": { - "start": 440, - "length": 75, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "GetOne()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#30-33) is not in mixedCase\n", - "markdown": "Function [naming.GetOne()](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L30-L33) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L30-L33", - "id": "bf6f97d6a82b84284efdade52d01bd6112007426e2e88d1568190d63c5c4a049", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "l", - "source_mapping": { - "start": 900, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 67 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.l (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#67) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.l](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L67) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L67", - "id": "cb8668afe6ed1284c935ac95f8f9cb1407f96226fe741e7310d104d5f10a0fc6", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "Number2", - "source_mapping": { - "start": 551, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 35 - ], - "starting_column": 35, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setInt", - "source_mapping": { - "start": 521, - "length": 63, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setInt(uint256,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter naming.setInt(uint256,uint256).Number2 (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#35) is not in mixedCase\n", - "markdown": "Parameter [naming.setInt(uint256,uint256).Number2](tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L35) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#L35", - "id": "f03bff0b488524254e19ff7d688d34211cd2f29934e22417c9f1fa43fc4a08ad", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/naming-convention/0.5.16/no_warning_for_public_constants.sol.0.5.16.NamingConvention.json b/tests/e2e/detectors/test_data/naming-convention/0.5.16/no_warning_for_public_constants.sol.0.5.16.NamingConvention.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/naming-convention/0.5.16/no_warning_for_public_constants.sol.0.5.16.NamingConvention.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol.0.6.11.NamingConvention.json b/tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol.0.6.11.NamingConvention.json deleted file mode 100644 index 49d7f52ec..000000000 --- a/tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol.0.6.11.NamingConvention.json +++ /dev/null @@ -1,1372 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "struct", - "name": "test", - "source_mapping": { - "start": 229, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "structure", - "convention": "CapWords" - } - } - ], - "description": "Struct naming.test (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#14-16) is not in CapWords\n", - "markdown": "Struct [naming.test](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L14-L16) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L14-L16", - "id": "0ef3ea412cb30b1f0df5fa2af4a7a06e2bf0373fae0770fd9e301aed12c209cf", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "I", - "source_mapping": { - "start": 932, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#69) is not in mixedCase\n", - "markdown": "Variable [T.I](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L69) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L69", - "id": "12df12bbda2059673d356e5c32ec4e8a037a3821c9fa42b831a9144437cb79f9", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "I", - "source_mapping": { - "start": 932, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#69) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.I](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L69) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L69", - "id": "2ac65aa5bb560436d64f16e164aaab90dbbf38d683bfdfdfb42eeb225fc51759", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "O", - "source_mapping": { - "start": 916, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#68) is not in mixedCase\n", - "markdown": "Variable [T.O](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L68) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L68", - "id": "2de986dda91f7c7e3a51470aa43abfa2c6fd363b742d1bbd38d5287ae179b83a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "Var_One", - "source_mapping": { - "start": 185, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable naming.Var_One (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#11) is not in mixedCase\n", - "markdown": "Variable [naming.Var_One](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L11) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L11", - "id": "34b7c817201b3f3086fc3541f140898d9e9aabe999b1c0a6ef8639ec04351f26", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "MY_other_CONSTANT", - "source_mapping": { - "start": 143, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable_constant", - "convention": "UPPER_CASE_WITH_UNDERSCORES" - } - } - ], - "description": "Constant naming.MY_other_CONSTANT (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#9) is not in UPPER_CASE_WITH_UNDERSCORES\n", - "markdown": "Constant [naming.MY_other_CONSTANT](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L9) is not in UPPER_CASE_WITH_UNDERSCORES\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L9", - "id": "596c2e8064f8f2df55cd5c878eb59c0a74ac7f20719c420d8af307f2431a1a90", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - }, - "additional_fields": { - "target": "contract", - "convention": "CapWords" - } - } - ], - "description": "Contract naming (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#3-48) is not in CapWords\n", - "markdown": "Contract [naming](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L3-L48) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L3-L48", - "id": "7247d550fb327e3aeb21c82714137e5b45a7e9eeaa6a1bc878102c8081033f85", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "enum", - "name": "numbers", - "source_mapping": { - "start": 79, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "enum", - "convention": "CapWords" - } - } - ], - "description": "Enum naming.numbers (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#6) is not in CapWords\n", - "markdown": "Enum [naming.numbers](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L6) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L6", - "id": "7c87b076ea2865060182cf11d155caadb1dcea415ccce0ca8563a74a01611fc2", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_used", - "source_mapping": { - "start": 794, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 59 - ], - "starting_column": 33, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 766, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 59, - 60 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(uint256,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#59) is not in mixedCase\n", - "markdown": "Parameter [T.test(uint256,uint256)._used](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L59) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L59", - "id": "818962ad9f50f13eb87b5c7deade22666431945fb60055f572b38246cfbf311e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_myPublicVar", - "source_mapping": { - "start": 741, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 56 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#56) is not in mixedCase\n", - "markdown": "Variable [T._myPublicVar](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L56) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L56", - "id": "8acd53815786acad5b92b51366daf79182a67ab438daa41a6e1ec8a9601fa9a3", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "event_", - "source_mapping": { - "start": 335, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 5, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "event_(uint256)" - }, - "additional_fields": { - "target": "event", - "convention": "CapWords" - } - } - ], - "description": "Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#23) is not in CapWords\n", - "markdown": "Event [namingevent_(uint256)](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L23) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L23", - "id": "978ecf4a2c8b96d947e60f6601cf60d0e25e07ebe80ebbc37a7e7f279afd1405", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "O", - "source_mapping": { - "start": 916, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#68) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.O](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L68) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L68", - "id": "b341001642225c62eae76fef9879c80003b3134b3bc627d9b1912ebcd190304b", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "CantDo", - "source_mapping": { - "start": 591, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "CantDo()" - }, - "additional_fields": { - "target": "modifier", - "convention": "mixedCase" - } - } - ], - "description": "Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#41-43) is not in mixedCase\n", - "markdown": "Modifier [naming.CantDo()](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L41-L43) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L41-L43", - "id": "b8a754a01bd47127f00032cdedd0ade3e27e6543631d8f5bc9e44365ab732895", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "GetOne", - "source_mapping": { - "start": 440, - "length": 75, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "GetOne()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#30-33) is not in mixedCase\n", - "markdown": "Function [naming.GetOne()](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L30-L33) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L30-L33", - "id": "bf6f97d6a82b84284efdade52d01bd6112007426e2e88d1568190d63c5c4a049", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "l", - "source_mapping": { - "start": 900, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 67 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.l (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#67) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.l](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L67) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L67", - "id": "cb8668afe6ed1284c935ac95f8f9cb1407f96226fe741e7310d104d5f10a0fc6", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "Number2", - "source_mapping": { - "start": 551, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 35 - ], - "starting_column": 35, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setInt", - "source_mapping": { - "start": 521, - "length": 63, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setInt(uint256,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter naming.setInt(uint256,uint256).Number2 (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#35) is not in mixedCase\n", - "markdown": "Parameter [naming.setInt(uint256,uint256).Number2](tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L35) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#L35", - "id": "f03bff0b488524254e19ff7d688d34211cd2f29934e22417c9f1fa43fc4a08ad", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/naming-convention/0.6.11/no_warning_for_public_constants.sol.0.6.11.NamingConvention.json b/tests/e2e/detectors/test_data/naming-convention/0.6.11/no_warning_for_public_constants.sol.0.6.11.NamingConvention.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/naming-convention/0.6.11/no_warning_for_public_constants.sol.0.6.11.NamingConvention.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol.0.7.6.NamingConvention.json b/tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol.0.7.6.NamingConvention.json deleted file mode 100644 index 97332650a..000000000 --- a/tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol.0.7.6.NamingConvention.json +++ /dev/null @@ -1,1372 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "struct", - "name": "test", - "source_mapping": { - "start": 229, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "structure", - "convention": "CapWords" - } - } - ], - "description": "Struct naming.test (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#14-16) is not in CapWords\n", - "markdown": "Struct [naming.test](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L14-L16) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L14-L16", - "id": "0ef3ea412cb30b1f0df5fa2af4a7a06e2bf0373fae0770fd9e301aed12c209cf", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "I", - "source_mapping": { - "start": 932, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#69) is not in mixedCase\n", - "markdown": "Variable [T.I](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L69) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L69", - "id": "12df12bbda2059673d356e5c32ec4e8a037a3821c9fa42b831a9144437cb79f9", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "I", - "source_mapping": { - "start": 932, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.I (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#69) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.I](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L69) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L69", - "id": "2ac65aa5bb560436d64f16e164aaab90dbbf38d683bfdfdfb42eeb225fc51759", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "O", - "source_mapping": { - "start": 916, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#68) is not in mixedCase\n", - "markdown": "Variable [T.O](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L68) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L68", - "id": "2de986dda91f7c7e3a51470aa43abfa2c6fd363b742d1bbd38d5287ae179b83a", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "Var_One", - "source_mapping": { - "start": 185, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable naming.Var_One (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#11) is not in mixedCase\n", - "markdown": "Variable [naming.Var_One](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L11) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L11", - "id": "34b7c817201b3f3086fc3541f140898d9e9aabe999b1c0a6ef8639ec04351f26", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "MY_other_CONSTANT", - "source_mapping": { - "start": 143, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable_constant", - "convention": "UPPER_CASE_WITH_UNDERSCORES" - } - } - ], - "description": "Constant naming.MY_other_CONSTANT (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#9) is not in UPPER_CASE_WITH_UNDERSCORES\n", - "markdown": "Constant [naming.MY_other_CONSTANT](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L9) is not in UPPER_CASE_WITH_UNDERSCORES\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L9", - "id": "596c2e8064f8f2df55cd5c878eb59c0a74ac7f20719c420d8af307f2431a1a90", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - }, - "additional_fields": { - "target": "contract", - "convention": "CapWords" - } - } - ], - "description": "Contract naming (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#3-48) is not in CapWords\n", - "markdown": "Contract [naming](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L3-L48) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L3-L48", - "id": "7247d550fb327e3aeb21c82714137e5b45a7e9eeaa6a1bc878102c8081033f85", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "enum", - "name": "numbers", - "source_mapping": { - "start": 79, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "enum", - "convention": "CapWords" - } - } - ], - "description": "Enum naming.numbers (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#6) is not in CapWords\n", - "markdown": "Enum [naming.numbers](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L6) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L6", - "id": "7c87b076ea2865060182cf11d155caadb1dcea415ccce0ca8563a74a01611fc2", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_used", - "source_mapping": { - "start": 794, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 59 - ], - "starting_column": 33, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 766, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 59, - 60 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(uint256,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#59) is not in mixedCase\n", - "markdown": "Parameter [T.test(uint256,uint256)._used](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L59) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L59", - "id": "818962ad9f50f13eb87b5c7deade22666431945fb60055f572b38246cfbf311e", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "_myPublicVar", - "source_mapping": { - "start": 741, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 56 - ], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "mixedCase" - } - } - ], - "description": "Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#56) is not in mixedCase\n", - "markdown": "Variable [T._myPublicVar](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L56) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L56", - "id": "8acd53815786acad5b92b51366daf79182a67ab438daa41a6e1ec8a9601fa9a3", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "event_", - "source_mapping": { - "start": 335, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 5, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "event_(uint256)" - }, - "additional_fields": { - "target": "event", - "convention": "CapWords" - } - } - ], - "description": "Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#23) is not in CapWords\n", - "markdown": "Event [namingevent_(uint256)](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L23) is not in CapWords\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L23", - "id": "978ecf4a2c8b96d947e60f6601cf60d0e25e07ebe80ebbc37a7e7f279afd1405", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "O", - "source_mapping": { - "start": 916, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#68) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.O](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L68) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L68", - "id": "b341001642225c62eae76fef9879c80003b3134b3bc627d9b1912ebcd190304b", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "CantDo", - "source_mapping": { - "start": 591, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "CantDo()" - }, - "additional_fields": { - "target": "modifier", - "convention": "mixedCase" - } - } - ], - "description": "Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#41-43) is not in mixedCase\n", - "markdown": "Modifier [naming.CantDo()](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L41-L43) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L41-L43", - "id": "b8a754a01bd47127f00032cdedd0ade3e27e6543631d8f5bc9e44365ab732895", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "GetOne", - "source_mapping": { - "start": 440, - "length": 75, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "GetOne()" - }, - "additional_fields": { - "target": "function", - "convention": "mixedCase" - } - } - ], - "description": "Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#30-33) is not in mixedCase\n", - "markdown": "Function [naming.GetOne()](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L30-L33) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L30-L33", - "id": "bf6f97d6a82b84284efdade52d01bd6112007426e2e88d1568190d63c5c4a049", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "l", - "source_mapping": { - "start": 900, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 67 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "T", - "source_mapping": { - "start": 692, - "length": 253, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "starting_column": 1, - "ending_column": 2 - } - } - }, - "additional_fields": { - "target": "variable", - "convention": "l_O_I_should_not_be_used" - } - } - ], - "description": "Variable T.l (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#67) is single letter l, O, or I, which should not be used\n", - "markdown": "Variable [T.l](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L67) is single letter l, O, or I, which should not be used\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L67", - "id": "cb8668afe6ed1284c935ac95f8f9cb1407f96226fe741e7310d104d5f10a0fc6", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "Number2", - "source_mapping": { - "start": 551, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 35 - ], - "starting_column": 35, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setInt", - "source_mapping": { - "start": 521, - "length": 63, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "naming", - "source_mapping": { - "start": 28, - "length": 642, - "filename_relative": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "setInt(uint256,uint256)" - } - } - }, - "additional_fields": { - "target": "parameter", - "convention": "mixedCase" - } - } - ], - "description": "Parameter naming.setInt(uint256,uint256).Number2 (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#35) is not in mixedCase\n", - "markdown": "Parameter [naming.setInt(uint256,uint256).Number2](tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L35) is not in mixedCase\n", - "first_markdown_element": "tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#L35", - "id": "f03bff0b488524254e19ff7d688d34211cd2f29934e22417c9f1fa43fc4a08ad", - "check": "naming-convention", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/naming-convention/0.7.6/no_warning_for_public_constants.sol.0.7.6.NamingConvention.json b/tests/e2e/detectors/test_data/naming-convention/0.7.6/no_warning_for_public_constants.sol.0.7.6.NamingConvention.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/naming-convention/0.7.6/no_warning_for_public_constants.sol.0.7.6.NamingConvention.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol.0.4.25.ConstantPragma.json b/tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol.0.4.25.ConstantPragma.json deleted file mode 100644 index 0761b2488..000000000 --- a/tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol.0.4.25.ConstantPragma.json +++ /dev/null @@ -1,65 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": "^0.4.24", - "source_mapping": { - "start": 0, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.24.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.24.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.4", - ".24" - ] - } - }, - { - "type": "pragma", - "name": "^0.4.25", - "source_mapping": { - "start": 0, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.4", - ".25" - ] - } - } - ], - "description": "Different versions of Solidity are used:\n\t- Version used: ['^0.4.24', '^0.4.25']\n\t- ^0.4.24 (tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.24.sol#1)\n\t- ^0.4.25 (tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol#1)\n", - "markdown": "Different versions of Solidity are used:\n\t- Version used: ['^0.4.24', '^0.4.25']\n\t- [^0.4.24](tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.24.sol#L1)\n\t- [^0.4.25](tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol#L1)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.24.sol#L1", - "id": "346aaa435d432d40cf79b02d73faab579d8543fad3d1166da4ce14fe08207281", - "check": "pragma", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol.0.5.16.ConstantPragma.json b/tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol.0.5.16.ConstantPragma.json deleted file mode 100644 index 74590cf5f..000000000 --- a/tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol.0.5.16.ConstantPragma.json +++ /dev/null @@ -1,65 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": "^0.5.15", - "source_mapping": { - "start": 0, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.15.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.15.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.5", - ".15" - ] - } - }, - { - "type": "pragma", - "name": "^0.5.16", - "source_mapping": { - "start": 0, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.5", - ".16" - ] - } - } - ], - "description": "Different versions of Solidity are used:\n\t- Version used: ['^0.5.15', '^0.5.16']\n\t- ^0.5.15 (tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.15.sol#1)\n\t- ^0.5.16 (tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol#1)\n", - "markdown": "Different versions of Solidity are used:\n\t- Version used: ['^0.5.15', '^0.5.16']\n\t- [^0.5.15](tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.15.sol#L1)\n\t- [^0.5.16](tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol#L1)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.15.sol#L1", - "id": "8719cceac46e48000519ed201bfc4b5614e74d18e3a2bee5eaef780e4c781b8b", - "check": "pragma", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol.0.6.11.ConstantPragma.json b/tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol.0.6.11.ConstantPragma.json deleted file mode 100644 index 6a9fb98b7..000000000 --- a/tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol.0.6.11.ConstantPragma.json +++ /dev/null @@ -1,65 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": "^0.6.10", - "source_mapping": { - "start": 0, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.10.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.10.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.6", - ".10" - ] - } - }, - { - "type": "pragma", - "name": "^0.6.11", - "source_mapping": { - "start": 0, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.6", - ".11" - ] - } - } - ], - "description": "Different versions of Solidity are used:\n\t- Version used: ['^0.6.10', '^0.6.11']\n\t- ^0.6.10 (tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.10.sol#1)\n\t- ^0.6.11 (tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol#1)\n", - "markdown": "Different versions of Solidity are used:\n\t- Version used: ['^0.6.10', '^0.6.11']\n\t- [^0.6.10](tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.10.sol#L1)\n\t- [^0.6.11](tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol#L1)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.10.sol#L1", - "id": "008f981322580b1555b5ff7f437a225ad8edec5f3f663e9cb3b67edf9f1330fc", - "check": "pragma", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol.0.7.6.ConstantPragma.json b/tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol.0.7.6.ConstantPragma.json deleted file mode 100644 index fe1c878f8..000000000 --- a/tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol.0.7.6.ConstantPragma.json +++ /dev/null @@ -1,65 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": "^0.7.5", - "source_mapping": { - "start": 0, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.5.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.5.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.7", - ".5" - ] - } - }, - { - "type": "pragma", - "name": "^0.7.6", - "source_mapping": { - "start": 0, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.7", - ".6" - ] - } - } - ], - "description": "Different versions of Solidity are used:\n\t- Version used: ['^0.7.5', '^0.7.6']\n\t- ^0.7.5 (tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.5.sol#1)\n\t- ^0.7.6 (tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol#1)\n", - "markdown": "Different versions of Solidity are used:\n\t- Version used: ['^0.7.5', '^0.7.6']\n\t- [^0.7.5](tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.5.sol#L1)\n\t- [^0.7.6](tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol#L1)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.5.sol#L1", - "id": "cc4121efef895d7909b1f1b353bf8e99df737389afbe71ace29e78d9a71f3100", - "check": "pragma", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol.0.8.2.ProtectedVariables.json b/tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol.0.8.2.ProtectedVariables.json deleted file mode 100644 index 1706185bc..000000000 --- a/tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol.0.8.2.ProtectedVariables.json +++ /dev/null @@ -1,400 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "buggy", - "source_mapping": { - "start": 938, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Internal", - "source_mapping": { - "start": 742, - "length": 331, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "buggy()" - } - }, - { - "type": "function", - "name": "onlyOwner", - "source_mapping": { - "start": 844, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Internal", - "source_mapping": { - "start": 742, - "length": 331, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "onlyOwner()" - } - }, - { - "type": "variable", - "name": "owner", - "source_mapping": { - "start": 822, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 38 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Internal", - "source_mapping": { - "start": 742, - "length": 331, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "Internal.buggy() (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#47-49) should have Internal.onlyOwner() (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#42-45) to protect Internal.owner (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#38)\n", - "markdown": "[Internal.buggy()](tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#L47-L49) should have [Internal.onlyOwner()](tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#L42-L45) to protect [Internal.owner](tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#L38)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#L47-L49", - "id": "347d5dbdb03710066bc29d7772156fe5ff3d3371fa4eee4839ee221a1d0de0a4", - "check": "protected-vars", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "set_not_protected", - "source_mapping": { - "start": 653, - "length": 85, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyAndWrite", - "source_mapping": { - "start": 55, - "length": 685, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "set_not_protected()" - } - }, - { - "type": "function", - "name": "onlyOwner", - "source_mapping": { - "start": 210, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyAndWrite", - "source_mapping": { - "start": 55, - "length": 685, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "onlyOwner()" - } - }, - { - "type": "variable", - "name": "external_contract", - "source_mapping": { - "start": 184, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyAndWrite", - "source_mapping": { - "start": 55, - "length": 685, - "filename_relative": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "ReentrancyAndWrite.set_not_protected() (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#31-33) should have ReentrancyAndWrite.onlyOwner() (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#11-14) to protect ReentrancyAndWrite.external_contract (tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#9)\n", - "markdown": "[ReentrancyAndWrite.set_not_protected()](tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#L31-L33) should have [ReentrancyAndWrite.onlyOwner()](tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#L11-L14) to protect [ReentrancyAndWrite.external_contract](tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/protected-vars/0.8.2/comment.sol#L31-L33", - "id": "3f3bc8c8a9b3e23482f47f1133aceaed81c2c781c6aaf25656a8e578c9f6cb0e", - "check": "protected-vars", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol.0.4.25.PublicMappingNested.json b/tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol.0.4.25.PublicMappingNested.json deleted file mode 100644 index e3801df68..000000000 --- a/tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol.0.4.25.PublicMappingNested.json +++ /dev/null @@ -1,68 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "testMapping", - "source_mapping": { - "start": 265, - "length": 47, - "filename_relative": "tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 5, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Bug", - "source_mapping": { - "start": 138, - "length": 345, - "filename_relative": "tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Bug.testMapping (tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol#14) is a public mapping with nested variables\n", - "markdown": "[Bug.testMapping](tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol#L14) is a public mapping with nested variables\n", - "first_markdown_element": "tests/e2e/detectors/test_data/public-mappings-nested/0.4.25/public_mappings_nested.sol#L14", - "id": "100978112524def620b003331f34b2b51eb78cae6f7eb2793d9671b4b7bb858a", - "check": "public-mappings-nested", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol.0.4.25.RedundantStatements.json b/tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol.0.4.25.RedundantStatements.json deleted file mode 100644 index 0005e2a15..000000000 --- a/tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol.0.4.25.RedundantStatements.json +++ /dev/null @@ -1,715 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "node", - "name": "bool", - "source_mapping": { - "start": 155, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"bool (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#7)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[bool](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L7)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L7", - "id": "57e17d7362f3d5c310d21eb6b73eccb845f8a3c52a308d15af3c118b5e2caaef", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "uint256", - "source_mapping": { - "start": 257, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"uint256 (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#12)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[uint256](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L12)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L12", - "id": "5e4c867c59bdbc386d4fd243aef79d957c92f8a40729b744096cd96989807c28", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "test", - "source_mapping": { - "start": 287, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"test (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#14)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[test](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L14)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L14", - "id": "635ad486b2aae108ff617146f22695a532e84c44a184bb609ececa744c91a497", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 169, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"RedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#8)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L8)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L8", - "id": "bcab82b93dc328a381dbd74ce83caf2ae429382bff9e0b482f9355bfcf029f98", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "uint256", - "source_mapping": { - "start": 141, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"uint256 (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#6)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[uint256](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L6)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L6", - "id": "c191e3e65af68e401996255ec75e9a8e990dc47205f36a49476bcd01e5753f79", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "assert(bool)", - "source_mapping": { - "start": 271, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"assert(bool) (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#13)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[assert(bool)](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L13)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.4.25/redundant_statements.sol#L13", - "id": "f36295bb4a93b2cd2940d435d827e82bb21d70801d2b71ce1c84585153112f9f", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol.0.5.16.RedundantStatements.json b/tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol.0.5.16.RedundantStatements.json deleted file mode 100644 index 47268f265..000000000 --- a/tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol.0.5.16.RedundantStatements.json +++ /dev/null @@ -1,715 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "node", - "name": "assert(bool)", - "source_mapping": { - "start": 271, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"assert(bool) (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#13)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[assert(bool)](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L13)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L13", - "id": "31b46936fd424a2a3125e5ce6408b20bedc3c6ca5c5c97e406c1cf43abae4bb4", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "bool", - "source_mapping": { - "start": 155, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"bool (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#7)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[bool](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L7)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L7", - "id": "3581fd720d146e690bb9ecfc0c1b059395cf4d46f69d7d2f802d8a9194b723ae", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "uint256", - "source_mapping": { - "start": 257, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"uint256 (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#12)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[uint256](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L12)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L12", - "id": "6f6a44cfade49a4a2e0310135fe0e83df0083b76c60daaf6d0864386d3485d6a", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "uint256", - "source_mapping": { - "start": 141, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"uint256 (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#6)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[uint256](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L6)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L6", - "id": "7e36dd98fc04d79e6f5f56f606fc38f3c20d1bada8eed5daa2695deadebbb361", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 169, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"RedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#8)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L8)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L8", - "id": "9c1239d64c216412cd356b9c4b8104baeb9f4f6dd110533b2392be410e68f946", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "test", - "source_mapping": { - "start": 287, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"test (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#14)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[test](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L14)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.5.16/redundant_statements.sol#L14", - "id": "b940d13da80841d1d7760c8b7b0bfcaf1c9eec6f8b7cd94b490db5efddf36cb7", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol.0.6.11.RedundantStatements.json b/tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol.0.6.11.RedundantStatements.json deleted file mode 100644 index 7bd6500d4..000000000 --- a/tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol.0.6.11.RedundantStatements.json +++ /dev/null @@ -1,715 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "node", - "name": "uint256", - "source_mapping": { - "start": 257, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"uint256 (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#12)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[uint256](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L12)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L12", - "id": "36a2feec0c5aa47c304207db4aa17181086bd3131720656fbf8619924e303a45", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "bool", - "source_mapping": { - "start": 155, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"bool (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#7)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[bool](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L7)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L7", - "id": "5e31be7e1558881cfd23ee013c1a7e1a51e9842a404133611755432d612169c4", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 169, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"RedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#8)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L8)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L8", - "id": "7b15d1a763fe71def2468433dab345b5922d874a86bd2a2dfefbb3a08d11317c", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "uint256", - "source_mapping": { - "start": 141, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"uint256 (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#6)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[uint256](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L6)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L6", - "id": "839e1eef447843981948ab172340fecb29ba20c989a3762a404d6b0f9f4b68ae", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "test", - "source_mapping": { - "start": 287, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"test (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#14)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[test](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L14)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L14", - "id": "8738d80351735e9090a90f8970736608a17979b06f654baf3dcfdc8ebed4f53a", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "assert(bool)", - "source_mapping": { - "start": 271, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"assert(bool) (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#13)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[assert(bool)](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L13)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.6.11/redundant_statements.sol#L13", - "id": "ab124cc40de408c2d4f0eb055ed421f31c65ccc9de11edb8761de84c3557fdb1", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol.0.7.6.RedundantStatements.json b/tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol.0.7.6.RedundantStatements.json deleted file mode 100644 index 797bdda30..000000000 --- a/tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol.0.7.6.RedundantStatements.json +++ /dev/null @@ -1,715 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "node", - "name": "uint256", - "source_mapping": { - "start": 257, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"uint256 (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#12)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[uint256](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L12)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L12", - "id": "17a6cb4a5c342753c8636d8af683b1d2b94e3a36dd05a19cee2336bc3a1b2f47", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "test", - "source_mapping": { - "start": 287, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"test (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#14)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[test](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L14)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L14", - "id": "4634ed5f2678141abaf73e85411ed25985f3916ad0db348b6923a15a43fabf32", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "assert(bool)", - "source_mapping": { - "start": 271, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 209, - "length": 109, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "test()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"assert(bool) (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#13)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[assert(bool)](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L13)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L13", - "id": "6971a500d684a342208eff16cc1f07abbf73f3ba86dbe7386570bdd8e489fc91", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 169, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"RedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#8)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L8)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L8", - "id": "6a2742272d79ff94d551adebc3a936866e15bc20c3c75238555435365118d382", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "bool", - "source_mapping": { - "start": 155, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"bool (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#7)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[bool](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L7)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L7", - "id": "703f162d107fded4a6f9e8f1fc0e49529967c9bfdfb5fc401568e6f48d417926", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "uint256", - "source_mapping": { - "start": 141, - "length": 4, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor()" - } - } - } - }, - { - "type": "contract", - "name": "RedundantStatementsContract", - "source_mapping": { - "start": 66, - "length": 254, - "filename_relative": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"uint256 (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#6)\" inRedundantStatementsContract (tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#3-18)\n", - "markdown": "Redundant expression \"[uint256](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L6)\" in[RedundantStatementsContract](tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L3-L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/redundant-statements/0.7.6/redundant_statements.sol#L6", - "id": "f21ab6ffea325fedf7d0c0548b552dde439e1859af0cc8811a5a0be792663502", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol.0.4.25.ReentrancyBenign.json b/tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol.0.4.25.ReentrancyBenign.json deleted file mode 100644 index b44c22620..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol.0.4.25.ReentrancyBenign.json +++ /dev/null @@ -1,4814 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 448, - "length": 132, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "success = target.call()", - "source_mapping": { - "start": 495, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 9, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 448, - "length": 132, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "success = target.call()", - "source_mapping": { - "start": 495, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 9, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 448, - "length": 132, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 561, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 448, - "length": 132, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad1(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#23-27):\n\tExternal calls:\n\t- success = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#24)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#26)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad1(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L23-L27):\n\tExternal calls:\n\t- [success = target.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L24)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L23-L27", - "id": "4ed6ddcc769b17b5a3737f7dafe5651bf4e5ffcbb574810d743cc09a0a703ede", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 322, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "! (msg.sender.call())", - "source_mapping": { - "start": 359, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 13, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 322, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "! (msg.sender.call())", - "source_mapping": { - "start": 359, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 13, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 322, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 423, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 322, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad0() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#16-21):\n\tExternal calls:\n\t- ! (msg.sender.call()) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#17)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#20)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad0()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L16-L21):\n\tExternal calls:\n\t- [! (msg.sender.call())](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L17)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L20)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L16-L21", - "id": "5c7237b5a2a9e1ad35da0f99ff70fbc418319a1c1218cededb9d75f99699a46a", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 961, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 46, - 47, - 48, - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 1008, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 961, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 46, - 47, - 48, - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1329, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1271, - "length": 87, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1040, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 961, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 46, - 47, - 48, - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call.value(1)()", - "source_mapping": { - "start": 1417, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64 - ], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1364, - "length": 91, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 63, - 64, - 65 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 1008, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 961, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 46, - 47, - 48, - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1329, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1271, - "length": 87, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1040, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 961, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 46, - 47, - 48, - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call.value(1)()", - "source_mapping": { - "start": 1417, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64 - ], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1364, - "length": 91, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 63, - 64, - 65 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 1071, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 961, - "length": 170, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 46, - 47, - 48, - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1501, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1461, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad4(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#46-51):\n\tExternal calls:\n\t- externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#47)\n\t\t- address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#60)\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#48)\n\t\t- address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#64)\n\tExternal calls sending eth:\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#48)\n\t\t- address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#64)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#49)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#68)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad4(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L46-L51):\n\tExternal calls:\n\t- [externalCaller(target)](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L47)\n\t\t- [address(target).call()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L60)\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L48)\n\t\t- [address(target).call.value(1)()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L64)\n\tExternal calls sending eth:\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L48)\n\t\t- [address(target).call.value(1)()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L64)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L49)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L68)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L46-L51", - "id": "8dc3fae54d7cfaf76e3de349febceb751f085423bdbf7a76eb5c86a70f3129aa", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 830, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 877, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 830, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1329, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1271, - "length": 87, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 877, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 830, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1329, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1271, - "length": 87, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 59, - 60, - 61 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 909, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 830, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1501, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1461, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad3(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#40-44):\n\tExternal calls:\n\t- externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#41)\n\t\t- address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#60)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#42)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#68)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad3(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L40-L44):\n\tExternal calls:\n\t- [externalCaller(target)](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L41)\n\t\t- [address(target).call()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L60)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L42)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L68)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L40-L44", - "id": "b410e9af3db5ba2a1c0d8d55f35a64120d2a15c45099ffae2f35cfe003a3fed3", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 586, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - }, - { - "type": "node", - "name": "success = target.call()", - "source_mapping": { - "start": 633, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30 - ], - "starting_column": 9, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 586, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call.value(1000)()", - "source_mapping": { - "start": 700, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 32 - ], - "starting_column": 13, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 586, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "success = target.call()", - "source_mapping": { - "start": 633, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30 - ], - "starting_column": 9, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 586, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call.value(1000)()", - "source_mapping": { - "start": 700, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 32 - ], - "starting_column": 13, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 586, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 748, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 13, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 586, - "length": 238, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad2(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#29-38):\n\tExternal calls:\n\t- success = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#30)\n\t- address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#32)\n\tExternal calls sending eth:\n\t- address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#32)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#33)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad2(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L29-L38):\n\tExternal calls:\n\t- [success = target.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L30)\n\t- [address(target).call.value(1000)()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L32)\n\tExternal calls sending eth:\n\t- [address(target).call.value(1000)()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L32)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L33)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L29-L38", - "id": "bd8ab3b91a42e51b2da0716331de604898a69d29ac9100eb95681a5a7d3f9c47", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1137, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1184, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 54 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1137, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call.value(1)()", - "source_mapping": { - "start": 1417, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64 - ], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1364, - "length": 91, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 63, - 64, - 65 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 1215, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 55 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1137, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1501, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1461, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 67, - 68, - 69 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 25, - "length": 1510, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad5(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#53-57):\n\tExternal calls:\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#54)\n\t\t- address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#64)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#55)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#68)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad5(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L53-L57):\n\tExternal calls:\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L54)\n\t\t- [address(target).call.value(1)()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L64)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L55)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L68)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.4.25/reentrancy-benign.sol#L53-L57", - "id": "fbfcc9d6336f34b7ee7673a85a38d0a012fa736517fa999c118486aa4313a4d2", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol.0.5.16.ReentrancyBenign.json b/tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol.0.5.16.ReentrancyBenign.json deleted file mode 100644 index 6b0fc0322..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol.0.5.16.ReentrancyBenign.json +++ /dev/null @@ -1,4855 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 886, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 933, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 886, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1387, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1329, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 933, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 886, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1387, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1329, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 965, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 886, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1563, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1523, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68, - 69, - 70 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad3(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#41-45):\n\tExternal calls:\n\t- externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#42)\n\t\t- address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#61)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#43)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#69)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad3(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L41-L45):\n\tExternal calls:\n\t- [externalCaller(target)](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L42)\n\t\t- [address(target).call()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L61)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L43)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L69)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L41-L45", - "id": "154bd4fe54b895374ec9300b7d7423b290821b97d48ce594f13efb080ccc070a", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 335, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 368, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 335, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 368, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 335, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 471, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 335, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad0() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#16-22):\n\tExternal calls:\n\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#17)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#21)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad0()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L16-L22):\n\tExternal calls:\n\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L17)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L21)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L16-L22", - "id": "244b43e33a9621616a0f97aece5e591ba53563a2178624d90cb056422988824d", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1195, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1242, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 55 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1195, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call.value(1)()", - "source_mapping": { - "start": 1477, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1424, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 1273, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 56 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1195, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1563, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1523, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68, - 69, - 70 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad5(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#54-58):\n\tExternal calls:\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#55)\n\t\t- address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#65)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#56)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#69)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad5(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L54-L58):\n\tExternal calls:\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L55)\n\t\t- [address(target).call.value(1)()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L65)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L56)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L69)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L54-L58", - "id": "949d5134548c079237abef52d623106e7e3e777d1eb4d89f47f64ae5025ec29a", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 1064, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1387, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1329, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1096, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call.value(1)()", - "source_mapping": { - "start": 1477, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1424, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 1064, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1387, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1329, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1096, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call.value(1)()", - "source_mapping": { - "start": 1477, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1424, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 1127, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 50 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1563, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1523, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68, - 69, - 70 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad4(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#47-52):\n\tExternal calls:\n\t- externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#48)\n\t\t- address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#61)\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#49)\n\t\t- address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#65)\n\tExternal calls sending eth:\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#49)\n\t\t- address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#65)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#50)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#69)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad4(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L47-L52):\n\tExternal calls:\n\t- [externalCaller(target)](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L48)\n\t\t- [address(target).call()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L61)\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L49)\n\t\t- [address(target).call.value(1)()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L65)\n\tExternal calls sending eth:\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L49)\n\t\t- [address(target).call.value(1)()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L65)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L50)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L69)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L47-L52", - "id": "a2ff3f26be25c48b10b66f8121b35b0674cfb38309a1f6ba3788852f13e7d166", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 496, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 543, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 496, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 543, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 496, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 612, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 496, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad1(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#24-28):\n\tExternal calls:\n\t- (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#25)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#27)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad1(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L24-L28):\n\tExternal calls:\n\t- [(success) = target.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L25)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L27)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L24-L28", - "id": "e7250d07da93991bb8f92df7697c008c36ec785214f7836c4f1c65b37e175309", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 684, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call.value(1000)()", - "source_mapping": { - "start": 754, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 684, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call.value(1000)()", - "source_mapping": { - "start": 754, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 804, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 13, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad2(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#30-39):\n\tExternal calls:\n\t- (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#31)\n\t- address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#33)\n\tExternal calls sending eth:\n\t- address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#33)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#34)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad2(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L30-L39):\n\tExternal calls:\n\t- [(success) = target.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L31)\n\t- [address(target).call.value(1000)()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L33)\n\tExternal calls sending eth:\n\t- [address(target).call.value(1000)()](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L33)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L34)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.5.16/reentrancy-benign.sol#L30-L39", - "id": "efb5fc52ea69459d644e5074daf0207502967de06e5b3cf876ae71a564d72d98", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol.0.6.11.ReentrancyBenign.json b/tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol.0.6.11.ReentrancyBenign.json deleted file mode 100644 index 3911f2b0b..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol.0.6.11.ReentrancyBenign.json +++ /dev/null @@ -1,4855 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 1064, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1387, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1329, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1096, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call.value(1)()", - "source_mapping": { - "start": 1477, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1424, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 1064, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1387, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1329, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1096, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call.value(1)()", - "source_mapping": { - "start": 1477, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1424, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 1127, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 50 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1017, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1563, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1523, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68, - 69, - 70 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad4(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#47-52):\n\tExternal calls:\n\t- externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#48)\n\t\t- address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#61)\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#49)\n\t\t- address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#65)\n\tExternal calls sending eth:\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#49)\n\t\t- address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#65)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#50)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#69)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad4(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L47-L52):\n\tExternal calls:\n\t- [externalCaller(target)](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L48)\n\t\t- [address(target).call()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L61)\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L49)\n\t\t- [address(target).call.value(1)()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L65)\n\tExternal calls sending eth:\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L49)\n\t\t- [address(target).call.value(1)()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L65)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L50)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L69)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L47-L52", - "id": "29c069745bf3c12b90fd74cf138f7300e077b078dae17e285fd528aaacb7a149", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 886, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 933, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 886, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1387, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1329, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 933, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 886, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1387, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1329, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 965, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 886, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1563, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1523, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68, - 69, - 70 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad3(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#41-45):\n\tExternal calls:\n\t- externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#42)\n\t\t- address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#61)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#43)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#69)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad3(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L41-L45):\n\tExternal calls:\n\t- [externalCaller(target)](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L42)\n\t\t- [address(target).call()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L61)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L43)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L69)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L41-L45", - "id": "56fad41e825218b4ea67b8f40f78becc7db05f1f9b3a79becede85b495be20f8", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 684, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call.value(1000)()", - "source_mapping": { - "start": 754, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 684, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call.value(1000)()", - "source_mapping": { - "start": 754, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 804, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 13, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 637, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad2(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#30-39):\n\tExternal calls:\n\t- (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#31)\n\t- address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#33)\n\tExternal calls sending eth:\n\t- address(target).call.value(1000)() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#33)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#34)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad2(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L30-L39):\n\tExternal calls:\n\t- [(success) = target.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L31)\n\t- [address(target).call.value(1000)()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L33)\n\tExternal calls sending eth:\n\t- [address(target).call.value(1000)()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L33)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L34)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L30-L39", - "id": "61f1a1c0a75fec4cea251d935d09700f433422562fac941b49c4060ca13c43cb", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 496, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 543, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 496, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 543, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 496, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 612, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 496, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad1(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#24-28):\n\tExternal calls:\n\t- (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#25)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#27)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad1(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L24-L28):\n\tExternal calls:\n\t- [(success) = target.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L25)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L27)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L24-L28", - "id": "6b0541d8db6bf0dc2835d8b19d09afa8f5e7b214d0e4c05b6aca0c625316fb19", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1195, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1242, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 55 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1195, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call.value(1)()", - "source_mapping": { - "start": 1477, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1424, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 1273, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 56 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1195, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1563, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1523, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68, - 69, - 70 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad5(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#54-58):\n\tExternal calls:\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#55)\n\t\t- address(target).call.value(1)() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#65)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#56)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#69)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad5(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L54-L58):\n\tExternal calls:\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L55)\n\t\t- [address(target).call.value(1)()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L65)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L56)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L69)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L54-L58", - "id": "7ffffc2f58dc006f2f543c361a4eb944fe1d6e58f52717b6770745e29593a91b", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 335, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 368, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 335, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 368, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 335, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 471, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 335, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1569, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad0() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#16-22):\n\tExternal calls:\n\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#17)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#21)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad0()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L16-L22):\n\tExternal calls:\n\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L17)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L21)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.6.11/reentrancy-benign.sol#L16-L22", - "id": "d36181ad9dbae588e0ab4f4689a9675a8afd9cf3f8a5f49ab6fbe3ee46016712", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol.0.7.6.ReentrancyBenign.json b/tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol.0.7.6.ReentrancyBenign.json deleted file mode 100644 index 301b60756..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol.0.7.6.ReentrancyBenign.json +++ /dev/null @@ -1,4855 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 879, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 926, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 879, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1380, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1322, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 926, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 42 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 879, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1380, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1322, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 958, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 43 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 879, - "length": 125, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad3(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1556, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1516, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68, - 69, - 70 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad3(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#41-45):\n\tExternal calls:\n\t- externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#42)\n\t\t- address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#61)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#43)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#69)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad3(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L41-L45):\n\tExternal calls:\n\t- [externalCaller(target)](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L42)\n\t\t- [address(target).call()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L61)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L43)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L69)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L41-L45", - "id": "57b2ad2ee5a85c48036d5e0a8e7b7d301256c1f692d6ff140516dd1ebaf4ae7d", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 630, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 677, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 630, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call{value: 1000}()", - "source_mapping": { - "start": 747, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 630, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 677, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 630, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call{value: 1000}()", - "source_mapping": { - "start": 747, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 630, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 797, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 13, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 630, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad2(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad2(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#30-39):\n\tExternal calls:\n\t- (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#31)\n\t- address(target).call{value: 1000}() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#33)\n\tExternal calls sending eth:\n\t- address(target).call{value: 1000}() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#33)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#34)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad2(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L30-L39):\n\tExternal calls:\n\t- [(success) = target.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L31)\n\t- [address(target).call{value: 1000}()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L33)\n\tExternal calls sending eth:\n\t- [address(target).call{value: 1000}()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L33)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L34)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L30-L39", - "id": "8ffb53b6e7211ef3840068c9971a02666e80ffd49661cfe391abe977b26696fc", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1188, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1235, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 55 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1188, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call{value: 1}()", - "source_mapping": { - "start": 1470, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1417, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 1266, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 56 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad5", - "source_mapping": { - "start": 1188, - "length": 128, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad5(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1556, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1516, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68, - 69, - 70 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad5(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#54-58):\n\tExternal calls:\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#55)\n\t\t- address(target).call{value: 1}() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#65)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#56)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#69)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad5(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L54-L58):\n\tExternal calls:\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L55)\n\t\t- [address(target).call{value: 1}()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L65)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L56)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L69)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L54-L58", - "id": "9ea4f876bdd562affa79eb256f24f2b4d36f6c488107451a724e247a01051dc6", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1010, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 1057, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1010, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1380, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1322, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1089, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1010, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "address(target).call{value: 1}()", - "source_mapping": { - "start": 1470, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1417, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "externalCaller(target)", - "source_mapping": { - "start": 1057, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 48 - ], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1010, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call()", - "source_mapping": { - "start": 1380, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 61 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "externalCaller", - "source_mapping": { - "start": 1322, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 60, - 61, - 62 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "externalCaller(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "ethSender(address(0))", - "source_mapping": { - "start": 1089, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 49 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1010, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "address(target).call{value: 1}()", - "source_mapping": { - "start": 1470, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "ethSender", - "source_mapping": { - "start": 1417, - "length": 93, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "ethSender(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "varChanger()", - "source_mapping": { - "start": 1120, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 50 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 1010, - "length": 172, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 47, - 48, - 49, - 50, - 51, - 52 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad4(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - }, - { - "type": "node", - "name": "anotherVariableToChange ++", - "source_mapping": { - "start": 1556, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 69 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "varChanger", - "source_mapping": { - "start": 1516, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 68, - 69, - 70 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "varChanger()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "anotherVariableToChange" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad4(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#47-52):\n\tExternal calls:\n\t- externalCaller(target) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#48)\n\t\t- address(target).call() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#61)\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#49)\n\t\t- address(target).call{value: 1}() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#65)\n\tExternal calls sending eth:\n\t- ethSender(address(0)) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#49)\n\t\t- address(target).call{value: 1}() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#65)\n\tState variables written after the call(s):\n\t- varChanger() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#50)\n\t\t- anotherVariableToChange ++ (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#69)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad4(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L47-L52):\n\tExternal calls:\n\t- [externalCaller(target)](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L48)\n\t\t- [address(target).call()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L61)\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L49)\n\t\t- [address(target).call{value: 1}()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L65)\n\tExternal calls sending eth:\n\t- [ethSender(address(0))](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L49)\n\t\t- [address(target).call{value: 1}()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L65)\n\tState variables written after the call(s):\n\t- [varChanger()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L50)\n\t\t- [anotherVariableToChange ++](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L69)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L47-L52", - "id": "d8ad62c290ebe6f6eba92d21f77ea938d9d713700e72d0eca1a007d9526a226e", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 489, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 536, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 489, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = target.call()", - "source_mapping": { - "start": 536, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 489, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 605, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 489, - "length": 135, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad1(address) (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#24-28):\n\tExternal calls:\n\t- (success) = target.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#25)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#27)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad1(address)](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L24-L28):\n\tExternal calls:\n\t- [(success) = target.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L25)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L27)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L24-L28", - "id": "dc9321d7bad1a38e7ec848d79ac28b7ebdeb537afe5a753d05308f9575acaa53", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 328, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 361, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 328, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 361, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 328, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "counter += 1", - "source_mapping": { - "start": 464, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 9, - "ending_column": 21 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 328, - "length": 155, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyBenign", - "source_mapping": { - "start": 28, - "length": 1562, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "counter" - } - } - ], - "description": "Reentrancy in ReentrancyBenign.bad0() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#16-22):\n\tExternal calls:\n\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#17)\n\tState variables written after the call(s):\n\t- counter += 1 (tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#21)\n", - "markdown": "Reentrancy in [ReentrancyBenign.bad0()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L16-L22):\n\tExternal calls:\n\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L17)\n\tState variables written after the call(s):\n\t- [counter += 1](tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L21)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-benign/0.7.6/reentrancy-benign.sol#L16-L22", - "id": "df1508d1cd0b80a365e0b0d1c11033a99ff078a905637351fb74c53292a98582", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol.0.4.25.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol.0.4.25.ReentrancyEth.json deleted file mode 100644 index 325c82826..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol.0.4.25.ReentrancyEth.json +++ /dev/null @@ -1,9301 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "refund", - "source_mapping": { - "start": 11531, - "length": 635, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TokenCreation", - "source_mapping": { - "start": 10437, - "length": 2342, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "refund()" - } - }, - { - "type": "node", - "name": "extraBalance.balance >= extraBalance.accumulatedInput()", - "source_mapping": { - "start": 11704, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 321 - ], - "starting_column": 17, - "ending_column": 72 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "refund", - "source_mapping": { - "start": 11531, - "length": 635, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TokenCreation", - "source_mapping": { - "start": 10437, - "length": 2342, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "refund()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "extraBalance.payOut(address(this),extraBalance.accumulatedInput())", - "source_mapping": { - "start": 11777, - "length": 67, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 322 - ], - "starting_column": 17, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "refund", - "source_mapping": { - "start": 11531, - "length": 635, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TokenCreation", - "source_mapping": { - "start": 10437, - "length": 2342, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "refund()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "msg.sender.call.value(weiGiven[msg.sender])()", - "source_mapping": { - "start": 11893, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 325 - ], - "starting_column": 17, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "refund", - "source_mapping": { - "start": 11531, - "length": 635, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TokenCreation", - "source_mapping": { - "start": 10437, - "length": 2342, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "refund()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "msg.sender.call.value(weiGiven[msg.sender])()", - "source_mapping": { - "start": 11893, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 325 - ], - "starting_column": 17, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "refund", - "source_mapping": { - "start": 11531, - "length": 635, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TokenCreation", - "source_mapping": { - "start": 10437, - "length": 2342, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "refund()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "weiGiven[msg.sender] = 0", - "source_mapping": { - "start": 12111, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 329 - ], - "starting_column": 17, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "refund", - "source_mapping": { - "start": 11531, - "length": 635, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TokenCreation", - "source_mapping": { - "start": 10437, - "length": 2342, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "refund()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "weiGiven" - } - } - ], - "description": "Reentrancy in TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#318-332):\n\tExternal calls:\n\t- extraBalance.balance >= extraBalance.accumulatedInput() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#321)\n\t- extraBalance.payOut(address(this),extraBalance.accumulatedInput()) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#322)\n\t- msg.sender.call.value(weiGiven[msg.sender])() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#325)\n\tExternal calls sending eth:\n\t- msg.sender.call.value(weiGiven[msg.sender])() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#325)\n\tState variables written after the call(s):\n\t- weiGiven[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#329)\n\tTokenCreationInterface.weiGiven (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#251) can be used in cross function reentrancies:\n\t- TokenCreation.createTokenProxy(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#299-316)\n\t- TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#318-332)\n", - "markdown": "Reentrancy in [TokenCreation.refund()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L318-L332):\n\tExternal calls:\n\t- [extraBalance.balance >= extraBalance.accumulatedInput()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L321)\n\t- [extraBalance.payOut(address(this),extraBalance.accumulatedInput())](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L322)\n\t- [msg.sender.call.value(weiGiven[msg.sender])()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L325)\n\tExternal calls sending eth:\n\t- [msg.sender.call.value(weiGiven[msg.sender])()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L325)\n\tState variables written after the call(s):\n\t- [weiGiven[msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L329)\n\t[TokenCreationInterface.weiGiven](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L251) can be used in cross function reentrancies:\n\t- [TokenCreation.createTokenProxy(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L299-L316)\n\t- [TokenCreation.refund()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L318-L332)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L318-L332", - "id": "a37226350e559b6bdb008757f6a66b89aab30256fc993719662092bb46b60b6c", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "executeProposal", - "source_mapping": { - "start": 32955, - "length": 2978, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "executeProposal(uint256,bytes)" - } - }, - { - "type": "node", - "name": "! isRecipientAllowed(p.recipient)", - "source_mapping": { - "start": 33981, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 881 - ], - "starting_column": 13, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "executeProposal", - "source_mapping": { - "start": 32955, - "length": 2978, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "executeProposal(uint256,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "allowedRecipients[_recipient] || (_recipient == address(extraBalance) && totalRewardToken > extraBalance.accumulatedInput())", - "source_mapping": { - "start": 43091, - "length": 289, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1159, - 1160, - 1161, - 1162, - 1163 - ], - "starting_column": 13, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "isRecipientAllowed", - "source_mapping": { - "start": 42994, - "length": 457, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "isRecipientAllowed(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "! p.recipient.call.value(p.amount)(_transactionData)", - "source_mapping": { - "start": 35109, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 915 - ], - "starting_column": 17, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "executeProposal", - "source_mapping": { - "start": 32955, - "length": 2978, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "executeProposal(uint256,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "! p.creator.send(p.proposalDeposit)", - "source_mapping": { - "start": 34718, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 904 - ], - "starting_column": 17, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "executeProposal", - "source_mapping": { - "start": 32955, - "length": 2978, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "executeProposal(uint256,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "! p.recipient.call.value(p.amount)(_transactionData)", - "source_mapping": { - "start": 35109, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 915 - ], - "starting_column": 17, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "executeProposal", - "source_mapping": { - "start": 32955, - "length": 2978, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "executeProposal(uint256,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "p.proposalPassed = true", - "source_mapping": { - "start": 35198, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 918 - ], - "starting_column": 13, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "executeProposal", - "source_mapping": { - "start": 32955, - "length": 2978, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "executeProposal(uint256,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "proposals" - } - }, - { - "type": "node", - "name": "closeProposal(_proposalID)", - "source_mapping": { - "start": 35817, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 933 - ], - "starting_column": 9, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "executeProposal", - "source_mapping": { - "start": 32955, - "length": 2978, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "executeProposal(uint256,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "proposals" - } - }, - { - "type": "node", - "name": "p.open = false", - "source_mapping": { - "start": 36121, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 944 - ], - "starting_column": 9, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "closeProposal", - "source_mapping": { - "start": 35940, - "length": 202, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 940, - 941, - 942, - 943, - 944, - 945 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "closeProposal(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "proposals" - } - }, - { - "type": "node", - "name": "rewardToken[address(this)] += p.amount", - "source_mapping": { - "start": 35698, - "length": 38, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 928 - ], - "starting_column": 17, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "executeProposal", - "source_mapping": { - "start": 32955, - "length": 2978, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "executeProposal(uint256,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "rewardToken" - } - }, - { - "type": "node", - "name": "closeProposal(_proposalID)", - "source_mapping": { - "start": 35817, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 933 - ], - "starting_column": 9, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "executeProposal", - "source_mapping": { - "start": 32955, - "length": 2978, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "executeProposal(uint256,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "sumOfProposalDeposits" - } - }, - { - "type": "node", - "name": "sumOfProposalDeposits -= p.proposalDeposit", - "source_mapping": { - "start": 36069, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 943 - ], - "starting_column": 13, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "closeProposal", - "source_mapping": { - "start": 35940, - "length": 202, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 940, - 941, - 942, - 943, - 944, - 945 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "closeProposal(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "sumOfProposalDeposits" - } - }, - { - "type": "node", - "name": "totalRewardToken += p.amount", - "source_mapping": { - "start": 35754, - "length": 28, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 929 - ], - "starting_column": 17, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "executeProposal", - "source_mapping": { - "start": 32955, - "length": 2978, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "executeProposal(uint256,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "totalRewardToken" - } - } - ], - "description": "Reentrancy in DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#853-937):\n\tExternal calls:\n\t- ! isRecipientAllowed(p.recipient) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#881)\n\t\t- allowedRecipients[_recipient] || (_recipient == address(extraBalance) && totalRewardToken > extraBalance.accumulatedInput()) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1159-1163)\n\t- ! p.recipient.call.value(p.amount)(_transactionData) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#915)\n\tExternal calls sending eth:\n\t- ! p.creator.send(p.proposalDeposit) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#904)\n\t- ! p.recipient.call.value(p.amount)(_transactionData) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#915)\n\tState variables written after the call(s):\n\t- p.proposalPassed = true (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#918)\n\tDAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies:\n\t- DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#702-726)\n\t- DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#809-817)\n\t- DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#940-945)\n\t- DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#853-937)\n\t- DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1204-1206)\n\t- DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1208-1218)\n\t- DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#741-806)\n\t- DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1199-1202)\n\t- DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#394)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#947-1020)\n\t- DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#820-850)\n\t- closeProposal(_proposalID) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#933)\n\t\t- p.open = false (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#944)\n\tDAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies:\n\t- DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#702-726)\n\t- DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#809-817)\n\t- DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#940-945)\n\t- DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#853-937)\n\t- DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1204-1206)\n\t- DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1208-1218)\n\t- DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#741-806)\n\t- DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1199-1202)\n\t- DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#394)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#947-1020)\n\t- DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#820-850)\n\t- rewardToken[address(this)] += p.amount (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#928)\n\tDAOInterface.rewardToken (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#410) can be used in cross function reentrancies:\n\t- DAO.changeProposalDeposit(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1139-1146)\n\t- DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#853-937)\n\t- DAO.minQuorum(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1174-1178)\n\t- DAO.newContract(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1022-1034)\n\t- DAO.retrieveDAOReward(bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1037-1057)\n\t- DAOInterface.rewardToken (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#410)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#947-1020)\n\t- closeProposal(_proposalID) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#933)\n\t\t- sumOfProposalDeposits -= p.proposalDeposit (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#943)\n\tDAOInterface.sumOfProposalDeposits (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#436) can be used in cross function reentrancies:\n\t- DAO.actualBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1169-1171)\n\t- DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#940-945)\n\t- DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#741-806)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#947-1020)\n\t- totalRewardToken += p.amount (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#929)\n\tDAOInterface.totalRewardToken (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#412) can be used in cross function reentrancies:\n\t- DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#853-937)\n\t- DAO.isRecipientAllowed(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1158-1167)\n\t- DAO.retrieveDAOReward(bool) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#1037-1057)\n\t- DAOInterface.totalRewardToken (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#412)\n", - "markdown": "Reentrancy in [DAO.executeProposal(uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L853-L937):\n\tExternal calls:\n\t- [! isRecipientAllowed(p.recipient)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L881)\n\t\t- [allowedRecipients[_recipient] || (_recipient == address(extraBalance) && totalRewardToken > extraBalance.accumulatedInput())](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1159-L1163)\n\t- [! p.recipient.call.value(p.amount)(_transactionData)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L915)\n\tExternal calls sending eth:\n\t- [! p.creator.send(p.proposalDeposit)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L904)\n\t- [! p.recipient.call.value(p.amount)(_transactionData)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L915)\n\tState variables written after the call(s):\n\t- [p.proposalPassed = true](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L918)\n\t[DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L394) can be used in cross function reentrancies:\n\t- [DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L702-L726)\n\t- [DAO.checkProposalCode(uint256,address,uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L809-L817)\n\t- [DAO.closeProposal(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L940-L945)\n\t- [DAO.executeProposal(uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L853-L937)\n\t- [DAO.getNewDAOAddress(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1204-L1206)\n\t- [DAO.isBlocked(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1208-L1218)\n\t- [DAO.newProposal(address,uint256,string,bytes,uint256,bool)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L741-L806)\n\t- [DAO.numberOfProposals()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1199-L1202)\n\t- [DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L394)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [DAO.vote(uint256,bool)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L820-L850)\n\t- [closeProposal(_proposalID)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L933)\n\t\t- [p.open = false](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L944)\n\t[DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L394) can be used in cross function reentrancies:\n\t- [DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L702-L726)\n\t- [DAO.checkProposalCode(uint256,address,uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L809-L817)\n\t- [DAO.closeProposal(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L940-L945)\n\t- [DAO.executeProposal(uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L853-L937)\n\t- [DAO.getNewDAOAddress(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1204-L1206)\n\t- [DAO.isBlocked(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1208-L1218)\n\t- [DAO.newProposal(address,uint256,string,bytes,uint256,bool)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L741-L806)\n\t- [DAO.numberOfProposals()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1199-L1202)\n\t- [DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L394)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [DAO.vote(uint256,bool)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L820-L850)\n\t- [rewardToken[address(this)] += p.amount](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L928)\n\t[DAOInterface.rewardToken](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L410) can be used in cross function reentrancies:\n\t- [DAO.changeProposalDeposit(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1139-L1146)\n\t- [DAO.executeProposal(uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L853-L937)\n\t- [DAO.minQuorum(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1174-L1178)\n\t- [DAO.newContract(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1022-L1034)\n\t- [DAO.retrieveDAOReward(bool)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1037-L1057)\n\t- [DAOInterface.rewardToken](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L410)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [closeProposal(_proposalID)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L933)\n\t\t- [sumOfProposalDeposits -= p.proposalDeposit](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L943)\n\t[DAOInterface.sumOfProposalDeposits](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L436) can be used in cross function reentrancies:\n\t- [DAO.actualBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1169-L1171)\n\t- [DAO.closeProposal(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L940-L945)\n\t- [DAO.newProposal(address,uint256,string,bytes,uint256,bool)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L741-L806)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [totalRewardToken += p.amount](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L929)\n\t[DAOInterface.totalRewardToken](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L412) can be used in cross function reentrancies:\n\t- [DAO.executeProposal(uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L853-L937)\n\t- [DAO.isRecipientAllowed(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1158-L1167)\n\t- [DAO.retrieveDAOReward(bool)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L1037-L1057)\n\t- [DAOInterface.totalRewardToken](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L412)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/DAO.sol#L853-L937", - "id": "dfa25972a34c3e5c0b03b9fb544740df3670f21201a99162a9070515009edad3", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol.0.4.25.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol.0.4.25.ReentrancyEth.json deleted file mode 100644 index ffe13665a..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol.0.4.25.ReentrancyEth.json +++ /dev/null @@ -1,851 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "withdrawBalance_nested", - "source_mapping": { - "start": 2465, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 74, - 75, - 76, - 77, - 78, - 79, - 80 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 26, - "length": 2691, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_nested()" - } - }, - { - "type": "node", - "name": "msg.sender.call.value(amount / 2)()", - "source_mapping": { - "start": 2620, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 77 - ], - "starting_column": 13, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance_nested", - "source_mapping": { - "start": 2465, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 74, - 75, - 76, - 77, - 78, - 79, - 80 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 26, - "length": 2691, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_nested()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "userBalance[msg.sender] = 0", - "source_mapping": { - "start": 2667, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 78 - ], - "starting_column": 13, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance_nested", - "source_mapping": { - "start": 2465, - "length": 246, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 74, - 75, - 76, - 77, - 78, - 79, - 80 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 26, - "length": 2691, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_nested()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "userBalance" - } - } - ], - "description": "Reentrancy in Reentrancy.withdrawBalance_nested() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#74-80):\n\tExternal calls:\n\t- msg.sender.call.value(amount / 2)() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#77)\n\tState variables written after the call(s):\n\t- userBalance[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#78)\n\tReentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#4) can be used in cross function reentrancies:\n\t- Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#10-12)\n\t- Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#15-22)\n\t- Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#6-8)\n\t- Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#24-31)\n\t- Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#33-41)\n\t- Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#43-50)\n\t- Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#52-60)\n\t- Reentrancy.withdrawBalance_fixed_4() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#61-72)\n\t- Reentrancy.withdrawBalance_nested() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#74-80)\n", - "markdown": "Reentrancy in [Reentrancy.withdrawBalance_nested()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L74-L80):\n\tExternal calls:\n\t- [msg.sender.call.value(amount / 2)()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L77)\n\tState variables written after the call(s):\n\t- [userBalance[msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L78)\n\t[Reentrancy.userBalance](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L4) can be used in cross function reentrancies:\n\t- [Reentrancy.addToBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L10-L12)\n\t- [Reentrancy.constructor()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L15-L22)\n\t- [Reentrancy.getBalance(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L6-L8)\n\t- [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L24-L31)\n\t- [Reentrancy.withdrawBalance_fixed()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L33-L41)\n\t- [Reentrancy.withdrawBalance_fixed_2()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L43-L50)\n\t- [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L52-L60)\n\t- [Reentrancy.withdrawBalance_fixed_4()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L61-L72)\n\t- [Reentrancy.withdrawBalance_nested()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L74-L80)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L74-L80", - "id": "02b13660e262b6ddcd87c831ffd6118ef52a3dd96eaea287f34310036f826ae5", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 656, - "length": 314, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 26, - "length": 2691, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - }, - { - "type": "node", - "name": "! (msg.sender.call.value(userBalance[msg.sender])())", - "source_mapping": { - "start": 839, - "length": 53, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 13, - "ending_column": 66 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 656, - "length": 314, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 26, - "length": 2691, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "userBalance[msg.sender] = 0", - "source_mapping": { - "start": 936, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 30 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 656, - "length": 314, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 26, - "length": 2691, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "userBalance" - } - } - ], - "description": "Reentrancy in Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#24-31):\n\tExternal calls:\n\t- ! (msg.sender.call.value(userBalance[msg.sender])()) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#27)\n\tState variables written after the call(s):\n\t- userBalance[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#30)\n\tReentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#4) can be used in cross function reentrancies:\n\t- Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#10-12)\n\t- Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#15-22)\n\t- Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#6-8)\n\t- Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#24-31)\n\t- Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#33-41)\n\t- Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#43-50)\n\t- Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#52-60)\n\t- Reentrancy.withdrawBalance_fixed_4() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#61-72)\n\t- Reentrancy.withdrawBalance_nested() (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#74-80)\n", - "markdown": "Reentrancy in [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L24-L31):\n\tExternal calls:\n\t- [! (msg.sender.call.value(userBalance[msg.sender])())](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L27)\n\tState variables written after the call(s):\n\t- [userBalance[msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L30)\n\t[Reentrancy.userBalance](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L4) can be used in cross function reentrancies:\n\t- [Reentrancy.addToBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L10-L12)\n\t- [Reentrancy.constructor()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L15-L22)\n\t- [Reentrancy.getBalance(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L6-L8)\n\t- [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L24-L31)\n\t- [Reentrancy.withdrawBalance_fixed()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L33-L41)\n\t- [Reentrancy.withdrawBalance_fixed_2()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L43-L50)\n\t- [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L52-L60)\n\t- [Reentrancy.withdrawBalance_fixed_4()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L61-L72)\n\t- [Reentrancy.withdrawBalance_nested()](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L74-L80)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy.sol#L24-L31", - "id": "7dffb7128bc810a3e2e53da77fd0d3e3a6764329bd89d4ff96aa7aaa195627b9", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol.0.4.25.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol.0.4.25.ReentrancyEth.json deleted file mode 100644 index 1a719e67b..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol.0.4.25.ReentrancyEth.json +++ /dev/null @@ -1,440 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 639, - "length": 278, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 185, - "length": 735, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - }, - { - "type": "node", - "name": "require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender]))", - "source_mapping": { - "start": 742, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 9, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 639, - "length": 278, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 185, - "length": 735, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "msg.sender.transfer(eth_deposed[token][msg.sender])", - "source_mapping": { - "start": 681, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 639, - "length": 278, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 185, - "length": 735, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "eth_deposed[token][msg.sender] = 0", - "source_mapping": { - "start": 829, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 639, - "length": 278, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 185, - "length": 735, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "eth_deposed" - } - }, - { - "type": "node", - "name": "token_deposed[token][msg.sender] = 0", - "source_mapping": { - "start": 873, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 9, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 639, - "length": 278, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 185, - "length": 735, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "token_deposed" - } - } - ], - "description": "Reentrancy in Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#22-29):\n\tExternal calls:\n\t- require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender])) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#24)\n\tExternal calls sending eth:\n\t- msg.sender.transfer(eth_deposed[token][msg.sender]) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#23)\n\tState variables written after the call(s):\n\t- eth_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#26)\n\tReentrancy.eth_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#10) can be used in cross function reentrancies:\n\t- Reentrancy.deposit_eth(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#13-15)\n\t- Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#22-29)\n\t- token_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#27)\n\tReentrancy.token_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#11) can be used in cross function reentrancies:\n\t- Reentrancy.deposit_token(address,uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#17-20)\n\t- Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#22-29)\n", - "markdown": "Reentrancy in [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L22-L29):\n\tExternal calls:\n\t- [require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender]))](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L24)\n\tExternal calls sending eth:\n\t- [msg.sender.transfer(eth_deposed[token][msg.sender])](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L23)\n\tState variables written after the call(s):\n\t- [eth_deposed[token][msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L26)\n\t[Reentrancy.eth_deposed](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L10) can be used in cross function reentrancies:\n\t- [Reentrancy.deposit_eth(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L13-L15)\n\t- [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L22-L29)\n\t- [token_deposed[token][msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L27)\n\t[Reentrancy.token_deposed](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L11) can be used in cross function reentrancies:\n\t- [Reentrancy.deposit_token(address,uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L17-L20)\n\t- [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L22-L29)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L22-L29", - "id": "17e756180e486527f07db2b6b810136a45beec8f495e04d32e653cbb02e186b1", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol.0.5.16.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol.0.5.16.ReentrancyEth.json deleted file mode 100644 index aeb67cc4d..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol.0.5.16.ReentrancyEth.json +++ /dev/null @@ -1,761 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 703, - "length": 357, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - }, - { - "type": "node", - "name": "(ret,mem) = msg.sender.call.value(userBalance[msg.sender])()", - "source_mapping": { - "start": 882, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 9, - "ending_column": 90 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 703, - "length": 357, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "userBalance[msg.sender] = 0", - "source_mapping": { - "start": 1026, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 32 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 703, - "length": 357, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "userBalance" - } - } - ], - "description": "Reentrancy in Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#25-33):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call.value(userBalance[msg.sender])() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#28)\n\tState variables written after the call(s):\n\t- userBalance[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#32)\n\tReentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#4) can be used in cross function reentrancies:\n\t- Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#10-12)\n\t- Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#15-23)\n\t- Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#6-8)\n\t- Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#25-33)\n\t- Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#35-44)\n\t- Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#46-53)\n\t- Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#55-64)\n", - "markdown": "Reentrancy in [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L25-L33):\n\tExternal calls:\n\t- [(ret,mem) = msg.sender.call.value(userBalance[msg.sender])()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L28)\n\tState variables written after the call(s):\n\t- [userBalance[msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L32)\n\t[Reentrancy.userBalance](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L4) can be used in cross function reentrancies:\n\t- [Reentrancy.addToBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L10-L12)\n\t- [Reentrancy.constructor()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L15-L23)\n\t- [Reentrancy.getBalance(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L6-L8)\n\t- [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L25-L33)\n\t- [Reentrancy.withdrawBalance_fixed()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L35-L44)\n\t- [Reentrancy.withdrawBalance_fixed_2()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L46-L53)\n\t- [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L55-L64)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L25-L33", - "id": "c298e6c5caff5538e11c6f1ca18d56cf9d54d0ce9aa411be080ecfd0c4c54d4b", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawBalance_fixed_3", - "source_mapping": { - "start": 1839, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_fixed_3()" - } - }, - { - "type": "node", - "name": "(ret,mem) = msg.sender.call.value(amount)()", - "source_mapping": { - "start": 2084, - "length": 64, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 60 - ], - "starting_column": 9, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance_fixed_3", - "source_mapping": { - "start": 1839, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_fixed_3()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "userBalance[msg.sender] = amount", - "source_mapping": { - "start": 2183, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 62 - ], - "starting_column": 13, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance_fixed_3", - "source_mapping": { - "start": 1839, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_fixed_3()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "userBalance" - } - } - ], - "description": "Reentrancy in Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#55-64):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call.value(amount)() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#60)\n\tState variables written after the call(s):\n\t- userBalance[msg.sender] = amount (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#62)\n\tReentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#4) can be used in cross function reentrancies:\n\t- Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#10-12)\n\t- Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#15-23)\n\t- Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#6-8)\n\t- Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#25-33)\n\t- Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#35-44)\n\t- Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#46-53)\n\t- Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#55-64)\n", - "markdown": "Reentrancy in [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L55-L64):\n\tExternal calls:\n\t- [(ret,mem) = msg.sender.call.value(amount)()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L60)\n\tState variables written after the call(s):\n\t- [userBalance[msg.sender] = amount](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L62)\n\t[Reentrancy.userBalance](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L4) can be used in cross function reentrancies:\n\t- [Reentrancy.addToBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L10-L12)\n\t- [Reentrancy.constructor()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L15-L23)\n\t- [Reentrancy.getBalance(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L6-L8)\n\t- [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L25-L33)\n\t- [Reentrancy.withdrawBalance_fixed()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L35-L44)\n\t- [Reentrancy.withdrawBalance_fixed_2()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L46-L53)\n\t- [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L55-L64)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy.sol#L55-L64", - "id": "f9420c25fc0bce840e980bfd4c13aabe760a260cbcca4218873c9c536f0b15ad", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol.0.5.16.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol.0.5.16.ReentrancyEth.json deleted file mode 100644 index 3ddbba506..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol.0.5.16.ReentrancyEth.json +++ /dev/null @@ -1,440 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 671, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 202, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - }, - { - "type": "node", - "name": "require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender]))", - "source_mapping": { - "start": 782, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 9, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 671, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 202, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "msg.sender.transfer(eth_deposed[token][msg.sender])", - "source_mapping": { - "start": 721, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 671, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 202, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "eth_deposed[token][msg.sender] = 0", - "source_mapping": { - "start": 869, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 671, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 202, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "eth_deposed" - } - }, - { - "type": "node", - "name": "token_deposed[token][msg.sender] = 0", - "source_mapping": { - "start": 913, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 9, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 671, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 202, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "token_deposed" - } - } - ], - "description": "Reentrancy in Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#22-29):\n\tExternal calls:\n\t- require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender])) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#24)\n\tExternal calls sending eth:\n\t- msg.sender.transfer(eth_deposed[token][msg.sender]) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#23)\n\tState variables written after the call(s):\n\t- eth_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#26)\n\tReentrancy.eth_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#10) can be used in cross function reentrancies:\n\t- Reentrancy.deposit_eth(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#13-15)\n\t- Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#22-29)\n\t- token_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#27)\n\tReentrancy.token_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#11) can be used in cross function reentrancies:\n\t- Reentrancy.deposit_token(address,uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#17-20)\n\t- Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#22-29)\n", - "markdown": "Reentrancy in [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L22-L29):\n\tExternal calls:\n\t- [require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender]))](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L24)\n\tExternal calls sending eth:\n\t- [msg.sender.transfer(eth_deposed[token][msg.sender])](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L23)\n\tState variables written after the call(s):\n\t- [eth_deposed[token][msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L26)\n\t[Reentrancy.eth_deposed](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L10) can be used in cross function reentrancies:\n\t- [Reentrancy.deposit_eth(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L13-L15)\n\t- [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L22-L29)\n\t- [token_deposed[token][msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L27)\n\t[Reentrancy.token_deposed](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L11) can be used in cross function reentrancies:\n\t- [Reentrancy.deposit_token(address,uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L17-L20)\n\t- [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L22-L29)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.5.16/reentrancy_indirect.sol#L22-L29", - "id": "2ce339e4f254ce27e1272b4f5f3d005a0614016e20463d51415ba8f842565052", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol.0.6.11.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol.0.6.11.ReentrancyEth.json deleted file mode 100644 index 36070aee3..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol.0.6.11.ReentrancyEth.json +++ /dev/null @@ -1,761 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "withdrawBalance_fixed_3", - "source_mapping": { - "start": 1843, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2213, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_fixed_3()" - } - }, - { - "type": "node", - "name": "(ret,mem) = msg.sender.call.value(amount)()", - "source_mapping": { - "start": 2088, - "length": 64, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 60 - ], - "starting_column": 9, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance_fixed_3", - "source_mapping": { - "start": 1843, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2213, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_fixed_3()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "userBalance[msg.sender] = amount", - "source_mapping": { - "start": 2187, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 62 - ], - "starting_column": 13, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance_fixed_3", - "source_mapping": { - "start": 1843, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2213, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_fixed_3()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "userBalance" - } - } - ], - "description": "Reentrancy in Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#55-64):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call.value(amount)() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#60)\n\tState variables written after the call(s):\n\t- userBalance[msg.sender] = amount (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#62)\n\tReentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#4) can be used in cross function reentrancies:\n\t- Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#10-12)\n\t- Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#15-23)\n\t- Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#6-8)\n\t- Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#25-33)\n\t- Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#35-44)\n\t- Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#46-53)\n\t- Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#55-64)\n", - "markdown": "Reentrancy in [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L55-L64):\n\tExternal calls:\n\t- [(ret,mem) = msg.sender.call.value(amount)()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L60)\n\tState variables written after the call(s):\n\t- [userBalance[msg.sender] = amount](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L62)\n\t[Reentrancy.userBalance](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L4) can be used in cross function reentrancies:\n\t- [Reentrancy.addToBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L10-L12)\n\t- [Reentrancy.constructor()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L15-L23)\n\t- [Reentrancy.getBalance(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L6-L8)\n\t- [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L25-L33)\n\t- [Reentrancy.withdrawBalance_fixed()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L35-L44)\n\t- [Reentrancy.withdrawBalance_fixed_2()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L46-L53)\n\t- [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L55-L64)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L55-L64", - "id": "26d55b7569799393de981b4e1294f2f6d2d3e0f7b8d700fe40ab98c5940bbf93", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 707, - "length": 357, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2213, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - }, - { - "type": "node", - "name": "(ret,mem) = msg.sender.call.value(userBalance[msg.sender])()", - "source_mapping": { - "start": 886, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 9, - "ending_column": 90 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 707, - "length": 357, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2213, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "userBalance[msg.sender] = 0", - "source_mapping": { - "start": 1030, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 32 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 707, - "length": 357, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2213, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "userBalance" - } - } - ], - "description": "Reentrancy in Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#25-33):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call.value(userBalance[msg.sender])() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#28)\n\tState variables written after the call(s):\n\t- userBalance[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#32)\n\tReentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#4) can be used in cross function reentrancies:\n\t- Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#10-12)\n\t- Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#15-23)\n\t- Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#6-8)\n\t- Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#25-33)\n\t- Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#35-44)\n\t- Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#46-53)\n\t- Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#55-64)\n", - "markdown": "Reentrancy in [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L25-L33):\n\tExternal calls:\n\t- [(ret,mem) = msg.sender.call.value(userBalance[msg.sender])()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L28)\n\tState variables written after the call(s):\n\t- [userBalance[msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L32)\n\t[Reentrancy.userBalance](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L4) can be used in cross function reentrancies:\n\t- [Reentrancy.addToBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L10-L12)\n\t- [Reentrancy.constructor()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L15-L23)\n\t- [Reentrancy.getBalance(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L6-L8)\n\t- [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L25-L33)\n\t- [Reentrancy.withdrawBalance_fixed()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L35-L44)\n\t- [Reentrancy.withdrawBalance_fixed_2()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L46-L53)\n\t- [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L55-L64)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy.sol#L25-L33", - "id": "c5f80f289a9e72f1134ab9af607176df7d12bdab173b8d66523f55eb387053a8", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol.0.6.11.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol.0.6.11.ReentrancyEth.json deleted file mode 100644 index da679a2c0..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol.0.6.11.ReentrancyEth.json +++ /dev/null @@ -1,440 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 696, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 227, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - }, - { - "type": "node", - "name": "require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender]))", - "source_mapping": { - "start": 807, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 9, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 696, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 227, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "msg.sender.transfer(eth_deposed[token][msg.sender])", - "source_mapping": { - "start": 746, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 696, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 227, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "eth_deposed[token][msg.sender] = 0", - "source_mapping": { - "start": 894, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 696, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 227, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "eth_deposed" - } - }, - { - "type": "node", - "name": "token_deposed[token][msg.sender] = 0", - "source_mapping": { - "start": 938, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 9, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 696, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 227, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "token_deposed" - } - } - ], - "description": "Reentrancy in Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#22-29):\n\tExternal calls:\n\t- require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender])) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#24)\n\tExternal calls sending eth:\n\t- msg.sender.transfer(eth_deposed[token][msg.sender]) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#23)\n\tState variables written after the call(s):\n\t- eth_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#26)\n\tReentrancy.eth_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#10) can be used in cross function reentrancies:\n\t- Reentrancy.deposit_eth(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#13-15)\n\t- Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#22-29)\n\t- token_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#27)\n\tReentrancy.token_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#11) can be used in cross function reentrancies:\n\t- Reentrancy.deposit_token(address,uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#17-20)\n\t- Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#22-29)\n", - "markdown": "Reentrancy in [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L22-L29):\n\tExternal calls:\n\t- [require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender]))](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L24)\n\tExternal calls sending eth:\n\t- [msg.sender.transfer(eth_deposed[token][msg.sender])](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L23)\n\tState variables written after the call(s):\n\t- [eth_deposed[token][msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L26)\n\t[Reentrancy.eth_deposed](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L10) can be used in cross function reentrancies:\n\t- [Reentrancy.deposit_eth(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L13-L15)\n\t- [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L22-L29)\n\t- [token_deposed[token][msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L27)\n\t[Reentrancy.token_deposed](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L11) can be used in cross function reentrancies:\n\t- [Reentrancy.deposit_token(address,uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L17-L20)\n\t- [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L22-L29)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.6.11/reentrancy_indirect.sol#L22-L29", - "id": "875860f8833c21533ebd104610793a7dce7464b0b69206111568e4fad87b1296", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol.0.7.6.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol.0.7.6.ReentrancyEth.json deleted file mode 100644 index f2ea87885..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol.0.7.6.ReentrancyEth.json +++ /dev/null @@ -1,761 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "withdrawBalance_fixed_3", - "source_mapping": { - "start": 1839, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_fixed_3()" - } - }, - { - "type": "node", - "name": "(ret,mem) = msg.sender.call{value: amount}()", - "source_mapping": { - "start": 2084, - "length": 64, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 60 - ], - "starting_column": 9, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance_fixed_3", - "source_mapping": { - "start": 1839, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_fixed_3()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "userBalance[msg.sender] = amount", - "source_mapping": { - "start": 2183, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 62 - ], - "starting_column": 13, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance_fixed_3", - "source_mapping": { - "start": 1839, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance_fixed_3()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "userBalance" - } - } - ], - "description": "Reentrancy in Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#55-64):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#60)\n\tState variables written after the call(s):\n\t- userBalance[msg.sender] = amount (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#62)\n\tReentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#4) can be used in cross function reentrancies:\n\t- Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#10-12)\n\t- Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#15-23)\n\t- Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#6-8)\n\t- Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#25-33)\n\t- Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#35-44)\n\t- Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#46-53)\n\t- Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#55-64)\n", - "markdown": "Reentrancy in [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L55-L64):\n\tExternal calls:\n\t- [(ret,mem) = msg.sender.call{value: amount}()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L60)\n\tState variables written after the call(s):\n\t- [userBalance[msg.sender] = amount](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L62)\n\t[Reentrancy.userBalance](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L4) can be used in cross function reentrancies:\n\t- [Reentrancy.addToBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L10-L12)\n\t- [Reentrancy.constructor()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L15-L23)\n\t- [Reentrancy.getBalance(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L6-L8)\n\t- [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L25-L33)\n\t- [Reentrancy.withdrawBalance_fixed()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L35-L44)\n\t- [Reentrancy.withdrawBalance_fixed_2()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L46-L53)\n\t- [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L55-L64)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L55-L64", - "id": "7060c71a1bebcb2af4c41dcd75540db5066eb8daf1e22d70e2ddfe0b346ebc97", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 703, - "length": 357, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - }, - { - "type": "node", - "name": "(ret,mem) = msg.sender.call{value: userBalance[msg.sender]}()", - "source_mapping": { - "start": 882, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 9, - "ending_column": 90 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 703, - "length": 357, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "userBalance[msg.sender] = 0", - "source_mapping": { - "start": 1026, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 32 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawBalance", - "source_mapping": { - "start": 703, - "length": 357, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 28, - "length": 2209, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawBalance()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "userBalance" - } - } - ], - "description": "Reentrancy in Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#25-33):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call{value: userBalance[msg.sender]}() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#28)\n\tState variables written after the call(s):\n\t- userBalance[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#32)\n\tReentrancy.userBalance (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#4) can be used in cross function reentrancies:\n\t- Reentrancy.addToBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#10-12)\n\t- Reentrancy.constructor() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#15-23)\n\t- Reentrancy.getBalance(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#6-8)\n\t- Reentrancy.withdrawBalance() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#25-33)\n\t- Reentrancy.withdrawBalance_fixed() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#35-44)\n\t- Reentrancy.withdrawBalance_fixed_2() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#46-53)\n\t- Reentrancy.withdrawBalance_fixed_3() (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#55-64)\n", - "markdown": "Reentrancy in [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L25-L33):\n\tExternal calls:\n\t- [(ret,mem) = msg.sender.call{value: userBalance[msg.sender]}()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L28)\n\tState variables written after the call(s):\n\t- [userBalance[msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L32)\n\t[Reentrancy.userBalance](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L4) can be used in cross function reentrancies:\n\t- [Reentrancy.addToBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L10-L12)\n\t- [Reentrancy.constructor()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L15-L23)\n\t- [Reentrancy.getBalance(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L6-L8)\n\t- [Reentrancy.withdrawBalance()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L25-L33)\n\t- [Reentrancy.withdrawBalance_fixed()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L35-L44)\n\t- [Reentrancy.withdrawBalance_fixed_2()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L46-L53)\n\t- [Reentrancy.withdrawBalance_fixed_3()](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L55-L64)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy.sol#L25-L33", - "id": "cec0a7af1ea200527f6cae87c979e9d4847cd646fa9aff3e4d60e2fb52ac9974", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol.0.7.6.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol.0.7.6.ReentrancyEth.json deleted file mode 100644 index 93dc2049f..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol.0.7.6.ReentrancyEth.json +++ /dev/null @@ -1,440 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 696, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 227, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - }, - { - "type": "node", - "name": "require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender]))", - "source_mapping": { - "start": 807, - "length": 76, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 9, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 696, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 227, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "msg.sender.transfer(eth_deposed[token][msg.sender])", - "source_mapping": { - "start": 746, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 696, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 227, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "eth_deposed[token][msg.sender] = 0", - "source_mapping": { - "start": 894, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 696, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 227, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "eth_deposed" - } - }, - { - "type": "node", - "name": "token_deposed[token][msg.sender] = 0", - "source_mapping": { - "start": 938, - "length": 36, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 9, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 696, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reentrancy", - "source_mapping": { - "start": 227, - "length": 758, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "token_deposed" - } - } - ], - "description": "Reentrancy in Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#22-29):\n\tExternal calls:\n\t- require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender])) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#24)\n\tExternal calls sending eth:\n\t- msg.sender.transfer(eth_deposed[token][msg.sender]) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#23)\n\tState variables written after the call(s):\n\t- eth_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#26)\n\tReentrancy.eth_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#10) can be used in cross function reentrancies:\n\t- Reentrancy.deposit_eth(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#13-15)\n\t- Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#22-29)\n\t- token_deposed[token][msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#27)\n\tReentrancy.token_deposed (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#11) can be used in cross function reentrancies:\n\t- Reentrancy.deposit_token(address,uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#17-20)\n\t- Reentrancy.withdraw(address) (tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#22-29)\n", - "markdown": "Reentrancy in [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L22-L29):\n\tExternal calls:\n\t- [require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender]))](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L24)\n\tExternal calls sending eth:\n\t- [msg.sender.transfer(eth_deposed[token][msg.sender])](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L23)\n\tState variables written after the call(s):\n\t- [eth_deposed[token][msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L26)\n\t[Reentrancy.eth_deposed](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L10) can be used in cross function reentrancies:\n\t- [Reentrancy.deposit_eth(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L13-L15)\n\t- [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L22-L29)\n\t- [token_deposed[token][msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L27)\n\t[Reentrancy.token_deposed](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L11) can be used in cross function reentrancies:\n\t- [Reentrancy.deposit_token(address,uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L17-L20)\n\t- [Reentrancy.withdraw(address)](tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L22-L29)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.7.6/reentrancy_indirect.sol#L22-L29", - "id": "57b8ea5ef49cfc6c27d5a658eaf5d88d46f4158a7235777f2e37cb17590a57e4", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol.0.8.10.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol.0.8.10.ReentrancyEth.json deleted file mode 100644 index 627829853..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol.0.8.10.ReentrancyEth.json +++ /dev/null @@ -1,231 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 133, - "length": 194, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBug", - "source_mapping": { - "start": 67, - "length": 534, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(uint256)" - } - }, - { - "type": "node", - "name": "Receiver(msg.sender).send_funds{value: amount}()", - "source_mapping": { - "start": 231, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 10, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 133, - "length": 194, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBug", - "source_mapping": { - "start": 67, - "length": 534, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "balances[msg.sender] -= amount", - "source_mapping": { - "start": 290, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 10, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 133, - "length": 194, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBug", - "source_mapping": { - "start": 67, - "length": 534, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - } - ], - "description": "Reentrancy in TestWithBug.withdraw(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#8-12):\n\tExternal calls:\n\t- Receiver(msg.sender).send_funds{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#10)\n\tState variables written after the call(s):\n\t- balances[msg.sender] -= amount (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#11)\n\tTestWithBug.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#6) can be used in cross function reentrancies:\n\t- TestWithBug.withdraw(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#8-12)\n\t- TestWithBug.withdrawFiltered(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#15-19)\n", - "markdown": "Reentrancy in [TestWithBug.withdraw(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#L8-L12):\n\tExternal calls:\n\t- [Receiver(msg.sender).send_funds{value: amount}()](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#L10)\n\tState variables written after the call(s):\n\t- [balances[msg.sender] -= amount](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#L11)\n\t[TestWithBug.balances](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#L6) can be used in cross function reentrancies:\n\t- [TestWithBug.withdraw(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#L8-L12)\n\t- [TestWithBug.withdrawFiltered(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#L15-L19)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_filtered_comments.sol#L8-L12", - "id": "a39e8bc9ea5df1e8d350cd5043066f0d6db8cf3e3b6951385d51bfe675a1a654", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol.0.8.10.ReentrancyEth.json b/tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol.0.8.10.ReentrancyEth.json deleted file mode 100644 index 52082ae94..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol.0.8.10.ReentrancyEth.json +++ /dev/null @@ -1,981 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "withdraw_internal", - "source_mapping": { - "start": 1320, - "length": 205, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 62, - 63, - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBugInternal", - "source_mapping": { - "start": 1100, - "length": 698, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw_internal(uint256)" - } - }, - { - "type": "node", - "name": "Receiver(msg.sender).send_funds{value: amount}()", - "source_mapping": { - "start": 1429, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 64 - ], - "starting_column": 10, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw_internal", - "source_mapping": { - "start": 1320, - "length": 205, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 62, - 63, - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBugInternal", - "source_mapping": { - "start": 1100, - "length": 698, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw_internal(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "balances[msg.sender] -= amount", - "source_mapping": { - "start": 1488, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 65 - ], - "starting_column": 10, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw_internal", - "source_mapping": { - "start": 1320, - "length": 205, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 62, - 63, - 64, - 65, - 66 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBugInternal", - "source_mapping": { - "start": 1100, - "length": 698, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw_internal(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - } - ], - "description": "Reentrancy in TestWithBugInternal.withdraw_internal(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#62-66):\n\tExternal calls:\n\t- Receiver(msg.sender).send_funds{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#64)\n\tState variables written after the call(s):\n\t- balances[msg.sender] -= amount (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#65)\n\tTestWithBugInternal.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#52) can be used in cross function reentrancies:\n\t- TestWithBugInternal.withdraw_all_internal() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#72-76)\n", - "markdown": "Reentrancy in [TestWithBugInternal.withdraw_internal(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L62-L66):\n\tExternal calls:\n\t- [Receiver(msg.sender).send_funds{value: amount}()](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L64)\n\tState variables written after the call(s):\n\t- [balances[msg.sender] -= amount](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L65)\n\t[TestWithBugInternal.balances](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L52) can be used in cross function reentrancies:\n\t- [TestWithBugInternal.withdraw_all_internal()](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L72-L76)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L62-L66", - "id": "4f446ae8b35f194e5708d12c386d122923fc4f63c17ee05d466b0aa69cd872fc", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 181, - "length": 207, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBug", - "source_mapping": { - "start": 67, - "length": 506, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(uint256)" - } - }, - { - "type": "node", - "name": "Receiver(msg.sender).send_funds{value: amount}()", - "source_mapping": { - "start": 292, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 10, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 181, - "length": 207, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBug", - "source_mapping": { - "start": 67, - "length": 506, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "balances[msg.sender] -= amount", - "source_mapping": { - "start": 351, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 10, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 181, - "length": 207, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBug", - "source_mapping": { - "start": 67, - "length": 506, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - } - ], - "description": "Reentrancy in TestWithBug.withdraw(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#13-17):\n\tExternal calls:\n\t- Receiver(msg.sender).send_funds{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#15)\n\tState variables written after the call(s):\n\t- balances[msg.sender] -= amount (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#16)\n\tTestWithBug.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#7) can be used in cross function reentrancies:\n\t- TestWithBug.withdraw_all() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#19-23)\n", - "markdown": "Reentrancy in [TestWithBug.withdraw(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L13-L17):\n\tExternal calls:\n\t- [Receiver(msg.sender).send_funds{value: amount}()](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L15)\n\tState variables written after the call(s):\n\t- [balances[msg.sender] -= amount](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L16)\n\t[TestWithBug.balances](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L7) can be used in cross function reentrancies:\n\t- [TestWithBug.withdraw_all()](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L19-L23)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L13-L17", - "id": "8b16f075685a85086648e20e2b9cc6b92f6acffd5aeb569fd7a12aac2e536c7d", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdraw_internal", - "source_mapping": { - "start": 2749, - "length": 205, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 122, - 123, - 124, - 125, - 126 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestBugWithPublicVariable", - "source_mapping": { - "start": 2516, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw_internal(uint256)" - } - }, - { - "type": "node", - "name": "Receiver(msg.sender).send_funds{value: amount}()", - "source_mapping": { - "start": 2858, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 124 - ], - "starting_column": 10, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw_internal", - "source_mapping": { - "start": 2749, - "length": 205, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 122, - 123, - 124, - 125, - 126 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestBugWithPublicVariable", - "source_mapping": { - "start": 2516, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw_internal(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "balances[msg.sender] -= amount", - "source_mapping": { - "start": 2917, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 125 - ], - "starting_column": 10, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw_internal", - "source_mapping": { - "start": 2749, - "length": 205, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 122, - 123, - 124, - 125, - 126 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestBugWithPublicVariable", - "source_mapping": { - "start": 2516, - "length": 441, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw_internal(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - } - ], - "description": "Reentrancy in TestBugWithPublicVariable.withdraw_internal(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#122-126):\n\tExternal calls:\n\t- Receiver(msg.sender).send_funds{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#124)\n\tState variables written after the call(s):\n\t- balances[msg.sender] -= amount (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#125)\n\tTestBugWithPublicVariable.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#112) can be used in cross function reentrancies:\n\t- TestBugWithPublicVariable.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#112)\n", - "markdown": "Reentrancy in [TestBugWithPublicVariable.withdraw_internal(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L122-L126):\n\tExternal calls:\n\t- [Receiver(msg.sender).send_funds{value: amount}()](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L124)\n\tState variables written after the call(s):\n\t- [balances[msg.sender] -= amount](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L125)\n\t[TestBugWithPublicVariable.balances](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L112) can be used in cross function reentrancies:\n\t- [TestBugWithPublicVariable.balances](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L112)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L122-L126", - "id": "a5e43c5bba73814bdd39f88d7edf362fca7cdb7efd0b81c8eade67ff4a0685bd", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 3089, - "length": 207, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 138, - 139, - 140, - 141, - 142 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBugNonReentrantRead", - "source_mapping": { - "start": 2959, - "length": 629, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(uint256)" - } - }, - { - "type": "node", - "name": "Receiver(msg.sender).send_funds{value: amount}()", - "source_mapping": { - "start": 3200, - "length": 48, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 140 - ], - "starting_column": 10, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 3089, - "length": 207, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 138, - 139, - 140, - 141, - 142 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBugNonReentrantRead", - "source_mapping": { - "start": 2959, - "length": 629, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "balances[msg.sender] -= amount", - "source_mapping": { - "start": 3259, - "length": 30, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 141 - ], - "starting_column": 10, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 3089, - "length": 207, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 138, - 139, - 140, - 141, - 142 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TestWithBugNonReentrantRead", - "source_mapping": { - "start": 2959, - "length": 629, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol", - "is_dependency": false, - "lines": [ - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - } - ], - "description": "Reentrancy in TestWithBugNonReentrantRead.withdraw(uint256) (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#138-142):\n\tExternal calls:\n\t- Receiver(msg.sender).send_funds{value: amount}() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#140)\n\tState variables written after the call(s):\n\t- balances[msg.sender] -= amount (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#141)\n\tTestWithBugNonReentrantRead.balances (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#132) can be used in cross function reentrancies:\n\t- TestWithBugNonReentrantRead.read() (tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#146-149)\n", - "markdown": "Reentrancy in [TestWithBugNonReentrantRead.withdraw(uint256)](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L138-L142):\n\tExternal calls:\n\t- [Receiver(msg.sender).send_funds{value: amount}()](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L140)\n\tState variables written after the call(s):\n\t- [balances[msg.sender] -= amount](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L141)\n\t[TestWithBugNonReentrantRead.balances](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L132) can be used in cross function reentrancies:\n\t- [TestWithBugNonReentrantRead.read()](tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L146-L149)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-eth/0.8.10/reentrancy_with_non_reentrant.sol#L138-L142", - "id": "b79d8012bf893f7647d07b05e004a8b921515338c9030856d8fff9d5d80f4bfc", - "check": "reentrancy-eth", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol.0.5.16.ReentrancyEvent.json b/tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol.0.5.16.ReentrancyEvent.json deleted file mode 100644 index a297bb05e..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol.0.5.16.ReentrancyEvent.json +++ /dev/null @@ -1,218 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 86, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 51, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug(C)" - } - }, - { - "type": "node", - "name": "c.f()", - "source_mapping": { - "start": 120, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 9, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 86, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 51, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug(C)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "E()", - "source_mapping": { - "start": 135, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 9, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 86, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 51, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug(C)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in Test.bug(C) (tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol#14-17):\n\tExternal calls:\n\t- c.f() (tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol#15)\n\tEvent emitted after the call(s):\n\t- E() (tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol#16)\n", - "markdown": "Reentrancy in [Test.bug(C)](tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol#L14-L17):\n\tExternal calls:\n\t- [c.f()](tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol#L15)\n\tEvent emitted after the call(s):\n\t- [E()](tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol#L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-events/0.5.16/reentrancy-events.sol#L14-L17", - "id": "6c7667330a55c58c55cce9ae6835edb150459c2c5d86e40406978699fbdeaa11", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol.0.6.11.ReentrancyEvent.json b/tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol.0.6.11.ReentrancyEvent.json deleted file mode 100644 index 721b54254..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol.0.6.11.ReentrancyEvent.json +++ /dev/null @@ -1,218 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 86, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 51, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug(C)" - } - }, - { - "type": "node", - "name": "c.f()", - "source_mapping": { - "start": 120, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 9, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 86, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 51, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug(C)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "E()", - "source_mapping": { - "start": 135, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 9, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 86, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 51, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug(C)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in Test.bug(C) (tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol#14-17):\n\tExternal calls:\n\t- c.f() (tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol#15)\n\tEvent emitted after the call(s):\n\t- E() (tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol#16)\n", - "markdown": "Reentrancy in [Test.bug(C)](tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol#L14-L17):\n\tExternal calls:\n\t- [c.f()](tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol#L15)\n\tEvent emitted after the call(s):\n\t- [E()](tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol#L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-events/0.6.11/reentrancy-events.sol#L14-L17", - "id": "57dfae738fee13bc099219197e91ba9d4baee9346b386d5e9789ff7210932775", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol.0.7.6.ReentrancyEvent.json b/tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol.0.7.6.ReentrancyEvent.json deleted file mode 100644 index 1b4ea36ae..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol.0.7.6.ReentrancyEvent.json +++ /dev/null @@ -1,218 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 86, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 51, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug(C)" - } - }, - { - "type": "node", - "name": "c.f()", - "source_mapping": { - "start": 120, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 9, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 86, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 51, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug(C)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "E()", - "source_mapping": { - "start": 135, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 9, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug", - "source_mapping": { - "start": 86, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 51, - "length": 193, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug(C)" - } - } - }, - "additional_fields": { - "underlying_type": "event" - } - } - ], - "description": "Reentrancy in Test.bug(C) (tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol#14-17):\n\tExternal calls:\n\t- c.f() (tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol#15)\n\tEvent emitted after the call(s):\n\t- E() (tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol#16)\n", - "markdown": "Reentrancy in [Test.bug(C)](tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol#L14-L17):\n\tExternal calls:\n\t- [c.f()](tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol#L15)\n\tEvent emitted after the call(s):\n\t- [E()](tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol#L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-events/0.7.6/reentrancy-events.sol#L14-L17", - "id": "eb179fcb7697d6ca861dc9623c9733389f70206ab7b0d7d8b2f3469a17a3ab7f", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol.0.4.25.ReentrancyReadBeforeWritten.json b/tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol.0.4.25.ReentrancyReadBeforeWritten.json deleted file mode 100644 index dc81e0f5d..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol.0.4.25.ReentrancyReadBeforeWritten.json +++ /dev/null @@ -1,27535 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "retrieveDAOReward", - "source_mapping": { - "start": 39505, - "length": 735, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "retrieveDAOReward(bool)" - } - }, - { - "type": "node", - "name": "reward = (rewardToken[msg.sender] * DAOrewardAccount.accumulatedInput()) / totalRewardToken - DAOpaidOut[msg.sender]", - "source_mapping": { - "start": 39789, - "length": 145, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1044, - 1045, - 1046 - ], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "retrieveDAOReward", - "source_mapping": { - "start": 39505, - "length": 735, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "retrieveDAOReward(bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "! DAOrewardAccount.payOut(dao.rewardAccount(),reward)", - "source_mapping": { - "start": 39977, - "length": 53, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1048 - ], - "starting_column": 17, - "ending_column": 70 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "retrieveDAOReward", - "source_mapping": { - "start": 39505, - "length": 735, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "retrieveDAOReward(bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "! DAOrewardAccount.payOut(dao,reward)", - "source_mapping": { - "start": 40100, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1052 - ], - "starting_column": 17, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "retrieveDAOReward", - "source_mapping": { - "start": 39505, - "length": 735, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "retrieveDAOReward(bool)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "DAOpaidOut[msg.sender] += reward", - "source_mapping": { - "start": 40180, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1055 - ], - "starting_column": 9, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "retrieveDAOReward", - "source_mapping": { - "start": 39505, - "length": 735, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "retrieveDAOReward(bool)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "DAOpaidOut" - } - } - ], - "description": "Reentrancy in DAO.retrieveDAOReward(bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1037-1057):\n\tExternal calls:\n\t- reward = (rewardToken[msg.sender] * DAOrewardAccount.accumulatedInput()) / totalRewardToken - DAOpaidOut[msg.sender] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1044-1046)\n\t- ! DAOrewardAccount.payOut(dao.rewardAccount(),reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1048)\n\t- ! DAOrewardAccount.payOut(dao,reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1052)\n\tState variables written after the call(s):\n\t- DAOpaidOut[msg.sender] += reward (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1055)\n\tDAOInterface.DAOpaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#423) can be used in cross function reentrancies:\n\t- DAOInterface.DAOpaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#423)\n\t- DAO.newContract(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1022-1034)\n\t- DAO.retrieveDAOReward(bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1037-1057)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n", - "markdown": "Reentrancy in [DAO.retrieveDAOReward(bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1037-L1057):\n\tExternal calls:\n\t- [reward = (rewardToken[msg.sender] * DAOrewardAccount.accumulatedInput()) / totalRewardToken - DAOpaidOut[msg.sender]](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1044-L1046)\n\t- [! DAOrewardAccount.payOut(dao.rewardAccount(),reward)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1048)\n\t- [! DAOrewardAccount.payOut(dao,reward)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1052)\n\tState variables written after the call(s):\n\t- [DAOpaidOut[msg.sender] += reward](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1055)\n\t[DAOInterface.DAOpaidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L423) can be used in cross function reentrancies:\n\t- [DAOInterface.DAOpaidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L423)\n\t- [DAO.newContract(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1022-L1034)\n\t- [DAO.retrieveDAOReward(bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1037-L1057)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1037-L1057", - "id": "48ff761b454067eaeae40c5b71f220484bc0dbee9802f41176c9d09f362b1234", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - }, - { - "type": "node", - "name": "reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]", - "source_mapping": { - "start": 40581, - "length": 116, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1068, - 1069 - ], - "starting_column": 9, - "ending_column": 103 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "! rewardAccount.payOut(_account,reward)", - "source_mapping": { - "start": 40711, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1070 - ], - "starting_column": 13, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "paidOut[_account] += reward", - "source_mapping": { - "start": 40779, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1072 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "paidOut" - } - } - ], - "description": "Reentrancy in DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074):\n\tExternal calls:\n\t- reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1068-1069)\n\t- ! rewardAccount.payOut(_account,reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1070)\n\tState variables written after the call(s):\n\t- paidOut[_account] += reward (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1072)\n\tDAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) can be used in cross function reentrancies:\n\t- DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- DAO.transferPaidOut(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1124-1136)\n\t- DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074)\n", - "markdown": "Reentrancy in [DAO.withdrawRewardFor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1064-L1074):\n\tExternal calls:\n\t- [reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1068-L1069)\n\t- [! rewardAccount.payOut(_account,reward)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1070)\n\tState variables written after the call(s):\n\t- [paidOut[_account] += reward](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1072)\n\t[DAOInterface.paidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L426) can be used in cross function reentrancies:\n\t- [DAOInterface.paidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L426)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [DAO.transferPaidOut(address,address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1124-L1136)\n\t- [DAO.withdrawRewardFor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1064-L1074)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1064-L1074", - "id": "72166dde55a4b03eff9ca22972a9d44de7afd0f5976f9795dde31801a29f5ddb", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - }, - { - "type": "node", - "name": "p.splitData[0].newDAO = createNewDAO(_newCurator)", - "source_mapping": { - "start": 37159, - "length": 49, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 974 - ], - "starting_column": 13, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "daoCreator.createDAO(_newCurator,0,0,now + splitExecutionPeriod)", - "source_mapping": { - "start": 44544, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1196 - ], - "starting_column": 9, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "createNewDAO", - "source_mapping": { - "start": 44427, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1194, - 1195, - 1196, - 1197 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createNewDAO(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "withdrawRewardFor(msg.sender)", - "source_mapping": { - "start": 38796, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1015 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]", - "source_mapping": { - "start": 40461, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1065 - ], - "starting_column": 13, - "ending_column": 103 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]", - "source_mapping": { - "start": 40581, - "length": 116, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1068, - 1069 - ], - "starting_column": 9, - "ending_column": 103 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "! rewardAccount.payOut(_account,reward)", - "source_mapping": { - "start": 40711, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1070 - ], - "starting_column": 13, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "balances[msg.sender] = 0", - "source_mapping": { - "start": 38912, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1017 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - }, - { - "type": "node", - "name": "paidOut[msg.sender] = 0", - "source_mapping": { - "start": 38946, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1018 - ], - "starting_column": 9, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "paidOut" - } - }, - { - "type": "node", - "name": "totalSupply -= balances[msg.sender]", - "source_mapping": { - "start": 38867, - "length": 35, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1016 - ], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "totalSupply" - } - } - ], - "description": "Reentrancy in DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020):\n\tExternal calls:\n\t- p.splitData[0].newDAO = createNewDAO(_newCurator) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#974)\n\t\t- daoCreator.createDAO(_newCurator,0,0,now + splitExecutionPeriod) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1196)\n\t- withdrawRewardFor(msg.sender) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1015)\n\t\t- (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1065)\n\t\t- reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1068-1069)\n\t\t- ! rewardAccount.payOut(_account,reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1070)\n\tState variables written after the call(s):\n\t- balances[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1017)\n\tTokenInterface.balances (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#41) can be used in cross function reentrancies:\n\t- Token.balanceOf(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#95-97)\n\t- TokenCreation.createTokenProxy(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#299-316)\n\t- TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#318-332)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- Token.transfer(address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#99-108)\n\t- Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#110-128)\n\t- DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850)\n\t- paidOut[msg.sender] = 0 (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1018)\n\tDAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) can be used in cross function reentrancies:\n\t- DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- DAO.transferPaidOut(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1124-1136)\n\t- DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074)\n\t- totalSupply -= balances[msg.sender] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1016)\n\tTokenInterface.totalSupply (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#45) can be used in cross function reentrancies:\n\t- TokenCreation.createTokenProxy(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#299-316)\n\t- DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#853-937)\n\t- DAO.minQuorum(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1174-1178)\n\t- TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#318-332)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- TokenInterface.totalSupply (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#45)\n\t- DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074)\n", - "markdown": "Reentrancy in [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020):\n\tExternal calls:\n\t- [p.splitData[0].newDAO = createNewDAO(_newCurator)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L974)\n\t\t- [daoCreator.createDAO(_newCurator,0,0,now + splitExecutionPeriod)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1196)\n\t- [withdrawRewardFor(msg.sender)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1015)\n\t\t- [(balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1065)\n\t\t- [reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1068-L1069)\n\t\t- [! rewardAccount.payOut(_account,reward)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1070)\n\tState variables written after the call(s):\n\t- [balances[msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1017)\n\t[TokenInterface.balances](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L41) can be used in cross function reentrancies:\n\t- [Token.balanceOf(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L95-L97)\n\t- [TokenCreation.createTokenProxy(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L299-L316)\n\t- [TokenCreation.refund()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L318-L332)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [Token.transfer(address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L99-L108)\n\t- [Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L110-L128)\n\t- [DAO.vote(uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L820-L850)\n\t- [paidOut[msg.sender] = 0](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1018)\n\t[DAOInterface.paidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L426) can be used in cross function reentrancies:\n\t- [DAOInterface.paidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L426)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [DAO.transferPaidOut(address,address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1124-L1136)\n\t- [DAO.withdrawRewardFor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1064-L1074)\n\t- [totalSupply -= balances[msg.sender]](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1016)\n\t[TokenInterface.totalSupply](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L45) can be used in cross function reentrancies:\n\t- [TokenCreation.createTokenProxy(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L299-L316)\n\t- [DAO.executeProposal(uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L853-L937)\n\t- [DAO.minQuorum(uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1174-L1178)\n\t- [TokenCreation.refund()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L318-L332)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [TokenInterface.totalSupply](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L45)\n\t- [DAO.withdrawRewardFor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1064-L1074)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020", - "id": "b5e0d89e8dfd1630d85dd7e57ea229d39c0c99b61d05b206ac600de851a9f8d4", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - }, - { - "type": "node", - "name": "p.splitData[0].newDAO = createNewDAO(_newCurator)", - "source_mapping": { - "start": 37159, - "length": 49, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 974 - ], - "starting_column": 13, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "daoCreator.createDAO(_newCurator,0,0,now + splitExecutionPeriod)", - "source_mapping": { - "start": 44544, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1196 - ], - "starting_column": 9, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "createNewDAO", - "source_mapping": { - "start": 44427, - "length": 198, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1194, - 1195, - 1196, - 1197 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createNewDAO(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "p.splitData[0].splitBalance = actualBalance()", - "source_mapping": { - "start": 37456, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 981 - ], - "starting_column": 13, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "proposals" - } - }, - { - "type": "node", - "name": "p.splitData[0].rewardToken = rewardToken[address(this)]", - "source_mapping": { - "start": 37515, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 982 - ], - "starting_column": 13, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "proposals" - } - }, - { - "type": "node", - "name": "p.splitData[0].totalSupply = totalSupply", - "source_mapping": { - "start": 37584, - "length": 40, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 983 - ], - "starting_column": 13, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "proposals" - } - }, - { - "type": "node", - "name": "p.proposalPassed = true", - "source_mapping": { - "start": 37638, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 984 - ], - "starting_column": 13, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "splitDAO", - "source_mapping": { - "start": 36148, - "length": 2849, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "splitDAO(uint256,address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "proposals" - } - } - ], - "description": "Reentrancy in DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020):\n\tExternal calls:\n\t- p.splitData[0].newDAO = createNewDAO(_newCurator) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#974)\n\t\t- daoCreator.createDAO(_newCurator,0,0,now + splitExecutionPeriod) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1196)\n\tState variables written after the call(s):\n\t- p.splitData[0].splitBalance = actualBalance() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#981)\n\tDAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies:\n\t- DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#702-726)\n\t- DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#809-817)\n\t- DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#940-945)\n\t- DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#853-937)\n\t- DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1204-1206)\n\t- DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1208-1218)\n\t- DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#741-806)\n\t- DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1199-1202)\n\t- DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850)\n\t- p.splitData[0].rewardToken = rewardToken[address(this)] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#982)\n\tDAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies:\n\t- DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#702-726)\n\t- DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#809-817)\n\t- DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#940-945)\n\t- DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#853-937)\n\t- DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1204-1206)\n\t- DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1208-1218)\n\t- DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#741-806)\n\t- DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1199-1202)\n\t- DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850)\n\t- p.splitData[0].totalSupply = totalSupply (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#983)\n\tDAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies:\n\t- DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#702-726)\n\t- DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#809-817)\n\t- DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#940-945)\n\t- DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#853-937)\n\t- DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1204-1206)\n\t- DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1208-1218)\n\t- DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#741-806)\n\t- DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1199-1202)\n\t- DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850)\n\t- p.proposalPassed = true (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#984)\n\tDAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394) can be used in cross function reentrancies:\n\t- DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#702-726)\n\t- DAO.checkProposalCode(uint256,address,uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#809-817)\n\t- DAO.closeProposal(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#940-945)\n\t- DAO.executeProposal(uint256,bytes) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#853-937)\n\t- DAO.getNewDAOAddress(uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1204-1206)\n\t- DAO.isBlocked(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1208-1218)\n\t- DAO.newProposal(address,uint256,string,bytes,uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#741-806)\n\t- DAO.numberOfProposals() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1199-1202)\n\t- DAOInterface.proposals (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#394)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850)\n", - "markdown": "Reentrancy in [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020):\n\tExternal calls:\n\t- [p.splitData[0].newDAO = createNewDAO(_newCurator)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L974)\n\t\t- [daoCreator.createDAO(_newCurator,0,0,now + splitExecutionPeriod)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1196)\n\tState variables written after the call(s):\n\t- [p.splitData[0].splitBalance = actualBalance()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L981)\n\t[DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L394) can be used in cross function reentrancies:\n\t- [DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L702-L726)\n\t- [DAO.checkProposalCode(uint256,address,uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L809-L817)\n\t- [DAO.closeProposal(uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L940-L945)\n\t- [DAO.executeProposal(uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L853-L937)\n\t- [DAO.getNewDAOAddress(uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1204-L1206)\n\t- [DAO.isBlocked(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1208-L1218)\n\t- [DAO.newProposal(address,uint256,string,bytes,uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L741-L806)\n\t- [DAO.numberOfProposals()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1199-L1202)\n\t- [DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L394)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [DAO.vote(uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L820-L850)\n\t- [p.splitData[0].rewardToken = rewardToken[address(this)]](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L982)\n\t[DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L394) can be used in cross function reentrancies:\n\t- [DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L702-L726)\n\t- [DAO.checkProposalCode(uint256,address,uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L809-L817)\n\t- [DAO.closeProposal(uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L940-L945)\n\t- [DAO.executeProposal(uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L853-L937)\n\t- [DAO.getNewDAOAddress(uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1204-L1206)\n\t- [DAO.isBlocked(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1208-L1218)\n\t- [DAO.newProposal(address,uint256,string,bytes,uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L741-L806)\n\t- [DAO.numberOfProposals()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1199-L1202)\n\t- [DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L394)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [DAO.vote(uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L820-L850)\n\t- [p.splitData[0].totalSupply = totalSupply](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L983)\n\t[DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L394) can be used in cross function reentrancies:\n\t- [DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L702-L726)\n\t- [DAO.checkProposalCode(uint256,address,uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L809-L817)\n\t- [DAO.closeProposal(uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L940-L945)\n\t- [DAO.executeProposal(uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L853-L937)\n\t- [DAO.getNewDAOAddress(uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1204-L1206)\n\t- [DAO.isBlocked(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1208-L1218)\n\t- [DAO.newProposal(address,uint256,string,bytes,uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L741-L806)\n\t- [DAO.numberOfProposals()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1199-L1202)\n\t- [DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L394)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [DAO.vote(uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L820-L850)\n\t- [p.proposalPassed = true](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L984)\n\t[DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L394) can be used in cross function reentrancies:\n\t- [DAO.DAO(address,DAO_Creator,uint256,uint256,uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L702-L726)\n\t- [DAO.checkProposalCode(uint256,address,uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L809-L817)\n\t- [DAO.closeProposal(uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L940-L945)\n\t- [DAO.executeProposal(uint256,bytes)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L853-L937)\n\t- [DAO.getNewDAOAddress(uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1204-L1206)\n\t- [DAO.isBlocked(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1208-L1218)\n\t- [DAO.newProposal(address,uint256,string,bytes,uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L741-L806)\n\t- [DAO.numberOfProposals()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1199-L1202)\n\t- [DAOInterface.proposals](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L394)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [DAO.vote(uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L820-L850)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020", - "id": "d5c4fd83d69b85c498cf950e0fcb501bdd4b8860f67cef98ada5bfcf180ad881", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "transferFromWithoutReward", - "source_mapping": { - "start": 41743, - "length": 247, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFromWithoutReward(address,address,uint256)" - } - }, - { - "type": "node", - "name": "! withdrawRewardFor(_from)", - "source_mapping": { - "start": 41890, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1118 - ], - "starting_column": 13, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferFromWithoutReward", - "source_mapping": { - "start": 41743, - "length": 247, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFromWithoutReward(address,address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]", - "source_mapping": { - "start": 40461, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1065 - ], - "starting_column": 13, - "ending_column": 103 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]", - "source_mapping": { - "start": 40581, - "length": 116, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1068, - 1069 - ], - "starting_column": 9, - "ending_column": 103 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "! rewardAccount.payOut(_account,reward)", - "source_mapping": { - "start": 40711, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1070 - ], - "starting_column": 13, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "transferFrom(_from,_to,_value)", - "source_mapping": { - "start": 41944, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1120 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferFromWithoutReward", - "source_mapping": { - "start": 41743, - "length": 247, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFromWithoutReward(address,address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - }, - { - "type": "node", - "name": "balances[_to] += _amount", - "source_mapping": { - "start": 4393, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 120 - ], - "starting_column": 13, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferFrom", - "source_mapping": { - "start": 4127, - "length": 509, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 3440, - "length": 1550, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFrom(address,address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - }, - { - "type": "node", - "name": "balances[_from] -= _amount", - "source_mapping": { - "start": 4431, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 121 - ], - "starting_column": 13, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferFrom", - "source_mapping": { - "start": 4127, - "length": 509, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 3440, - "length": 1550, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFrom(address,address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - }, - { - "type": "node", - "name": "transferFrom(_from,_to,_value)", - "source_mapping": { - "start": 41944, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1120 - ], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferFromWithoutReward", - "source_mapping": { - "start": 41743, - "length": 247, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferFromWithoutReward(address,address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "paidOut" - } - }, - { - "type": "node", - "name": "paidOut[_from] -= transferPaidOut", - "source_mapping": { - "start": 42279, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1133 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferPaidOut", - "source_mapping": { - "start": 41997, - "length": 384, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferPaidOut(address,address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "paidOut" - } - }, - { - "type": "node", - "name": "paidOut[_to] += transferPaidOut", - "source_mapping": { - "start": 42322, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1134 - ], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferPaidOut", - "source_mapping": { - "start": 41997, - "length": 384, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferPaidOut(address,address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "paidOut" - } - } - ], - "description": "Reentrancy in DAO.transferFromWithoutReward(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1112-1121):\n\tExternal calls:\n\t- ! withdrawRewardFor(_from) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1118)\n\t\t- (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1065)\n\t\t- reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1068-1069)\n\t\t- ! rewardAccount.payOut(_account,reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1070)\n\tState variables written after the call(s):\n\t- transferFrom(_from,_to,_value) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1120)\n\t\t- balances[_to] += _amount (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#120)\n\t\t- balances[_from] -= _amount (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#121)\n\tTokenInterface.balances (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#41) can be used in cross function reentrancies:\n\t- Token.balanceOf(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#95-97)\n\t- TokenCreation.createTokenProxy(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#299-316)\n\t- TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#318-332)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- Token.transfer(address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#99-108)\n\t- Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#110-128)\n\t- DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850)\n\t- transferFrom(_from,_to,_value) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1120)\n\t\t- paidOut[_from] -= transferPaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1133)\n\t\t- paidOut[_to] += transferPaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1134)\n\tDAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) can be used in cross function reentrancies:\n\t- DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- DAO.transferPaidOut(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1124-1136)\n\t- DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074)\n", - "markdown": "Reentrancy in [DAO.transferFromWithoutReward(address,address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1112-L1121):\n\tExternal calls:\n\t- [! withdrawRewardFor(_from)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1118)\n\t\t- [(balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1065)\n\t\t- [reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1068-L1069)\n\t\t- [! rewardAccount.payOut(_account,reward)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1070)\n\tState variables written after the call(s):\n\t- [transferFrom(_from,_to,_value)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1120)\n\t\t- [balances[_to] += _amount](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L120)\n\t\t- [balances[_from] -= _amount](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L121)\n\t[TokenInterface.balances](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L41) can be used in cross function reentrancies:\n\t- [Token.balanceOf(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L95-L97)\n\t- [TokenCreation.createTokenProxy(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L299-L316)\n\t- [TokenCreation.refund()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L318-L332)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [Token.transfer(address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L99-L108)\n\t- [Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L110-L128)\n\t- [DAO.vote(uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L820-L850)\n\t- [transferFrom(_from,_to,_value)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1120)\n\t\t- [paidOut[_from] -= transferPaidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1133)\n\t\t- [paidOut[_to] += transferPaidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1134)\n\t[DAOInterface.paidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L426) can be used in cross function reentrancies:\n\t- [DAOInterface.paidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L426)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [DAO.transferPaidOut(address,address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1124-L1136)\n\t- [DAO.withdrawRewardFor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1064-L1074)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1112-L1121", - "id": "e74ce16aec9de9f8c37762ef749b95f2cba0d27a1d386d41cf1ad708da41dc38", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "transferWithoutReward", - "source_mapping": { - "start": 41191, - "length": 175, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1091, - 1092, - 1093, - 1094, - 1095 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferWithoutReward(address,uint256)" - } - }, - { - "type": "node", - "name": "! getMyReward()", - "source_mapping": { - "start": 41288, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1092 - ], - "starting_column": 13, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferWithoutReward", - "source_mapping": { - "start": 41191, - "length": 175, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1091, - 1092, - 1093, - 1094, - 1095 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferWithoutReward(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]", - "source_mapping": { - "start": 40461, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1065 - ], - "starting_column": 13, - "ending_column": 103 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]", - "source_mapping": { - "start": 40581, - "length": 116, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1068, - 1069 - ], - "starting_column": 9, - "ending_column": 103 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "! rewardAccount.payOut(_account,reward)", - "source_mapping": { - "start": 40711, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1070 - ], - "starting_column": 13, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawRewardFor", - "source_mapping": { - "start": 40361, - "length": 473, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawRewardFor(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "transfer(_to,_value)", - "source_mapping": { - "start": 41331, - "length": 28, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1094 - ], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferWithoutReward", - "source_mapping": { - "start": 41191, - "length": 175, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1091, - 1092, - 1093, - 1094, - 1095 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferWithoutReward(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - }, - { - "type": "node", - "name": "balances[msg.sender] -= _amount", - "source_mapping": { - "start": 3920, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 101 - ], - "starting_column": 13, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transfer", - "source_mapping": { - "start": 3765, - "length": 356, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 3440, - "length": 1550, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transfer(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - }, - { - "type": "node", - "name": "balances[_to] += _amount", - "source_mapping": { - "start": 3965, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 102 - ], - "starting_column": 13, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transfer", - "source_mapping": { - "start": 3765, - "length": 356, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Token", - "source_mapping": { - "start": 3440, - "length": 1550, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transfer(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "balances" - } - }, - { - "type": "node", - "name": "transfer(_to,_value)", - "source_mapping": { - "start": 41331, - "length": 28, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1094 - ], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferWithoutReward", - "source_mapping": { - "start": 41191, - "length": 175, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1091, - 1092, - 1093, - 1094, - 1095 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferWithoutReward(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "paidOut" - } - }, - { - "type": "node", - "name": "paidOut[_from] -= transferPaidOut", - "source_mapping": { - "start": 42279, - "length": 33, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1133 - ], - "starting_column": 9, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferPaidOut", - "source_mapping": { - "start": 41997, - "length": 384, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferPaidOut(address,address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "paidOut" - } - }, - { - "type": "node", - "name": "paidOut[_to] += transferPaidOut", - "source_mapping": { - "start": 42322, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1134 - ], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "transferPaidOut", - "source_mapping": { - "start": 41997, - "length": 384, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DAO", - "source_mapping": { - "start": 28296, - "length": 17108, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol", - "is_dependency": false, - "lines": [ - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transferPaidOut(address,address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "paidOut" - } - } - ], - "description": "Reentrancy in DAO.transferWithoutReward(address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1091-1095):\n\tExternal calls:\n\t- ! getMyReward() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1092)\n\t\t- (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1065)\n\t\t- reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account] (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1068-1069)\n\t\t- ! rewardAccount.payOut(_account,reward) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1070)\n\tState variables written after the call(s):\n\t- transfer(_to,_value) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1094)\n\t\t- balances[msg.sender] -= _amount (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#101)\n\t\t- balances[_to] += _amount (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#102)\n\tTokenInterface.balances (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#41) can be used in cross function reentrancies:\n\t- Token.balanceOf(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#95-97)\n\t- TokenCreation.createTokenProxy(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#299-316)\n\t- TokenCreation.refund() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#318-332)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- Token.transfer(address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#99-108)\n\t- Token.transferFrom(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#110-128)\n\t- DAO.vote(uint256,bool) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#820-850)\n\t- transfer(_to,_value) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1094)\n\t\t- paidOut[_from] -= transferPaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1133)\n\t\t- paidOut[_to] += transferPaidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1134)\n\tDAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426) can be used in cross function reentrancies:\n\t- DAOInterface.paidOut (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#426)\n\t- DAO.splitDAO(uint256,address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#947-1020)\n\t- DAO.transferPaidOut(address,address,uint256) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1124-1136)\n\t- DAO.withdrawRewardFor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#1064-1074)\n", - "markdown": "Reentrancy in [DAO.transferWithoutReward(address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1091-L1095):\n\tExternal calls:\n\t- [! getMyReward()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1092)\n\t\t- [(balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account]](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1065)\n\t\t- [reward = (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account]](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1068-L1069)\n\t\t- [! rewardAccount.payOut(_account,reward)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1070)\n\tState variables written after the call(s):\n\t- [transfer(_to,_value)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1094)\n\t\t- [balances[msg.sender] -= _amount](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L101)\n\t\t- [balances[_to] += _amount](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L102)\n\t[TokenInterface.balances](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L41) can be used in cross function reentrancies:\n\t- [Token.balanceOf(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L95-L97)\n\t- [TokenCreation.createTokenProxy(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L299-L316)\n\t- [TokenCreation.refund()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L318-L332)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [Token.transfer(address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L99-L108)\n\t- [Token.transferFrom(address,address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L110-L128)\n\t- [DAO.vote(uint256,bool)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L820-L850)\n\t- [transfer(_to,_value)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1094)\n\t\t- [paidOut[_from] -= transferPaidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1133)\n\t\t- [paidOut[_to] += transferPaidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1134)\n\t[DAOInterface.paidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L426) can be used in cross function reentrancies:\n\t- [DAOInterface.paidOut](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L426)\n\t- [DAO.splitDAO(uint256,address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L947-L1020)\n\t- [DAO.transferPaidOut(address,address,uint256)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1124-L1136)\n\t- [DAO.withdrawRewardFor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1064-L1074)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/DAO.sol#L1091-L1095", - "id": "fe6ba50f9fe5accbf51b8c33af2714aa9b9fa83b40d676c814d9a1ac19978352", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol.0.4.25.ReentrancyReadBeforeWritten.json b/tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol.0.4.25.ReentrancyReadBeforeWritten.json deleted file mode 100644 index 6e78e3971..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol.0.4.25.ReentrancyReadBeforeWritten.json +++ /dev/null @@ -1,890 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 326, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 776, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "! (msg.sender.call())", - "source_mapping": { - "start": 391, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 13, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 326, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 776, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "notCalled = false", - "source_mapping": { - "start": 455, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 326, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 776, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - } - ], - "description": "Reentrancy in ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#16-22):\n\tExternal calls:\n\t- ! (msg.sender.call()) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#18)\n\tState variables written after the call(s):\n\t- notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#21)\n\tReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#4) can be used in cross function reentrancies:\n\t- ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#16-22)\n\t- ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#24-29)\n\t- ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#7-14)\n\t- ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#31-37)\n", - "markdown": "Reentrancy in [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L16-L22):\n\tExternal calls:\n\t- [! (msg.sender.call())](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L18)\n\tState variables written after the call(s):\n\t- [notCalled = false](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L21)\n\t[ReentrancyWrite.notCalled](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L4) can be used in cross function reentrancies:\n\t- [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L16-L22)\n\t- [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L24-L29)\n\t- [ReentrancyWrite.constructor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L7-L14)\n\t- [ReentrancyWrite.good()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L31-L37)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L16-L22", - "id": "933549b102ad856713f3d95a954fc77ec57f7ccf0f4d9de708f391cf094a8d65", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 485, - "length": 158, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 776, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "success = msg.sender.call()", - "source_mapping": { - "start": 560, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 485, - "length": 158, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 776, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "bad0()", - "source_mapping": { - "start": 630, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 485, - "length": 158, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 776, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "! (msg.sender.call())", - "source_mapping": { - "start": 391, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 13, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 326, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 776, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "bad0()", - "source_mapping": { - "start": 630, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 28 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 485, - "length": 158, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 776, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - }, - { - "type": "node", - "name": "notCalled = false", - "source_mapping": { - "start": 455, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 326, - "length": 153, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 776, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - } - ], - "description": "Reentrancy in ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#24-29):\n\tExternal calls:\n\t- success = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#26)\n\t- bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#28)\n\t\t- ! (msg.sender.call()) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#18)\n\tState variables written after the call(s):\n\t- bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#28)\n\t\t- notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#21)\n\tReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#4) can be used in cross function reentrancies:\n\t- ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#16-22)\n\t- ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#24-29)\n\t- ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#7-14)\n\t- ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#31-37)\n", - "markdown": "Reentrancy in [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L24-L29):\n\tExternal calls:\n\t- [success = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L26)\n\t- [bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L28)\n\t\t- [! (msg.sender.call())](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L18)\n\tState variables written after the call(s):\n\t- [bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L28)\n\t\t- [notCalled = false](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L21)\n\t[ReentrancyWrite.notCalled](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L4) can be used in cross function reentrancies:\n\t- [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L16-L22)\n\t- [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L24-L29)\n\t- [ReentrancyWrite.constructor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L7-L14)\n\t- [ReentrancyWrite.good()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L31-L37)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.4.25/reentrancy-write.sol#L24-L29", - "id": "ac39ee6d5de5be925fc4f4038716ee18f762da9548d34786a3b925a9dcd6dbd3", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/no-reentrancy-staticcall.sol.0.5.16.ReentrancyReadBeforeWritten.json b/tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/no-reentrancy-staticcall.sol.0.5.16.ReentrancyReadBeforeWritten.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/no-reentrancy-staticcall.sol.0.5.16.ReentrancyReadBeforeWritten.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol.0.5.16.ReentrancyReadBeforeWritten.json b/tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol.0.5.16.ReentrancyReadBeforeWritten.json deleted file mode 100644 index 404362007..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol.0.5.16.ReentrancyReadBeforeWritten.json +++ /dev/null @@ -1,913 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 336, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 397, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 336, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "notCalled = false", - "source_mapping": { - "start": 500, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 336, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - } - ], - "description": "Reentrancy in ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#16-23):\n\tExternal calls:\n\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#18)\n\tState variables written after the call(s):\n\t- notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#22)\n\tReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#4) can be used in cross function reentrancies:\n\t- ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#16-23)\n\t- ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#25-30)\n\t- ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#7-14)\n\t- ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#32-39)\n", - "markdown": "Reentrancy in [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L16-L23):\n\tExternal calls:\n\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L18)\n\tState variables written after the call(s):\n\t- [notCalled = false](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L22)\n\t[ReentrancyWrite.notCalled](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L4) can be used in cross function reentrancies:\n\t- [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L16-L23)\n\t- [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L25-L30)\n\t- [ReentrancyWrite.constructor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L7-L14)\n\t- [ReentrancyWrite.good()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L32-L39)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L16-L23", - "id": "41ceea104e666924bd8048ba89d761acca8408a3b82d77831baa2a6d0a4130f0", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 530, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 605, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 530, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "bad0()", - "source_mapping": { - "start": 678, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 530, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 397, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 336, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "bad0()", - "source_mapping": { - "start": 678, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 530, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - }, - { - "type": "node", - "name": "notCalled = false", - "source_mapping": { - "start": 500, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 336, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - } - ], - "description": "Reentrancy in ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#25-30):\n\tExternal calls:\n\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#27)\n\t- bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#29)\n\t\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#18)\n\tState variables written after the call(s):\n\t- bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#29)\n\t\t- notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#22)\n\tReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#4) can be used in cross function reentrancies:\n\t- ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#16-23)\n\t- ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#25-30)\n\t- ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#7-14)\n\t- ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#32-39)\n", - "markdown": "Reentrancy in [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L25-L30):\n\tExternal calls:\n\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L27)\n\t- [bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L29)\n\t\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L18)\n\tState variables written after the call(s):\n\t- [bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L29)\n\t\t- [notCalled = false](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L22)\n\t[ReentrancyWrite.notCalled](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L4) can be used in cross function reentrancies:\n\t- [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L16-L23)\n\t- [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L25-L30)\n\t- [ReentrancyWrite.constructor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L7-L14)\n\t- [ReentrancyWrite.good()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L32-L39)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.5.16/reentrancy-write.sol#L25-L30", - "id": "bd0b8f5e977c52e5cb17a3fdac3796ef55f28259d65be4b970be40d3f0f7ad6f", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/no-reentrancy-staticcall.sol.0.6.11.ReentrancyReadBeforeWritten.json b/tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/no-reentrancy-staticcall.sol.0.6.11.ReentrancyReadBeforeWritten.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/no-reentrancy-staticcall.sol.0.6.11.ReentrancyReadBeforeWritten.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol.0.6.11.ReentrancyReadBeforeWritten.json b/tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol.0.6.11.ReentrancyReadBeforeWritten.json deleted file mode 100644 index 9615749d6..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol.0.6.11.ReentrancyReadBeforeWritten.json +++ /dev/null @@ -1,913 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 336, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 397, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 336, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "notCalled = false", - "source_mapping": { - "start": 500, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 336, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - } - ], - "description": "Reentrancy in ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#16-23):\n\tExternal calls:\n\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#18)\n\tState variables written after the call(s):\n\t- notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#22)\n\tReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#4) can be used in cross function reentrancies:\n\t- ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#16-23)\n\t- ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#25-30)\n\t- ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#7-14)\n\t- ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#32-39)\n", - "markdown": "Reentrancy in [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L16-L23):\n\tExternal calls:\n\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L18)\n\tState variables written after the call(s):\n\t- [notCalled = false](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L22)\n\t[ReentrancyWrite.notCalled](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L4) can be used in cross function reentrancies:\n\t- [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L16-L23)\n\t- [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L25-L30)\n\t- [ReentrancyWrite.constructor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L7-L14)\n\t- [ReentrancyWrite.good()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L32-L39)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L16-L23", - "id": "aa356923ac753b7b9c7a5225d800da7f8d0c9cd9648155ab65a841ef2ea03cee", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 530, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 605, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 530, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "bad0()", - "source_mapping": { - "start": 678, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 530, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 397, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 336, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "bad0()", - "source_mapping": { - "start": 678, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 530, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - }, - { - "type": "node", - "name": "notCalled = false", - "source_mapping": { - "start": 500, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 336, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 28, - "length": 859, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - } - ], - "description": "Reentrancy in ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#25-30):\n\tExternal calls:\n\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#27)\n\t- bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#29)\n\t\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#18)\n\tState variables written after the call(s):\n\t- bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#29)\n\t\t- notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#22)\n\tReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#4) can be used in cross function reentrancies:\n\t- ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#16-23)\n\t- ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#25-30)\n\t- ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#7-14)\n\t- ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#32-39)\n", - "markdown": "Reentrancy in [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L25-L30):\n\tExternal calls:\n\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L27)\n\t- [bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L29)\n\t\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L18)\n\tState variables written after the call(s):\n\t- [bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L29)\n\t\t- [notCalled = false](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L22)\n\t[ReentrancyWrite.notCalled](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L4) can be used in cross function reentrancies:\n\t- [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L16-L23)\n\t- [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L25-L30)\n\t- [ReentrancyWrite.constructor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L7-L14)\n\t- [ReentrancyWrite.good()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L32-L39)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.6.11/reentrancy-write.sol#L25-L30", - "id": "aef958ec49549d90b692c58d3d6a19ef5c4bcc3ff6ceed7dfd7d01210601d847", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/no-reentrancy-staticcall.sol.0.7.6.ReentrancyReadBeforeWritten.json b/tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/no-reentrancy-staticcall.sol.0.7.6.ReentrancyReadBeforeWritten.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/no-reentrancy-staticcall.sol.0.7.6.ReentrancyReadBeforeWritten.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol.0.7.6.ReentrancyReadBeforeWritten.json b/tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol.0.7.6.ReentrancyReadBeforeWritten.json deleted file mode 100644 index 3105cb9a1..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol.0.7.6.ReentrancyReadBeforeWritten.json +++ /dev/null @@ -1,913 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 383, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 82, - "length": 852, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 444, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 383, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 82, - "length": 852, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "notCalled = false", - "source_mapping": { - "start": 547, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 383, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 82, - "length": 852, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - } - ], - "description": "Reentrancy in ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#20-27):\n\tExternal calls:\n\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#22)\n\tState variables written after the call(s):\n\t- notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#26)\n\tReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#8) can be used in cross function reentrancies:\n\t- ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#20-27)\n\t- ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#29-34)\n\t- ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#11-18)\n\t- ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#36-43)\n", - "markdown": "Reentrancy in [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L20-L27):\n\tExternal calls:\n\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L22)\n\tState variables written after the call(s):\n\t- [notCalled = false](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L26)\n\t[ReentrancyWrite.notCalled](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L8) can be used in cross function reentrancies:\n\t- [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L20-L27)\n\t- [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L29-L34)\n\t- [ReentrancyWrite.constructor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L11-L18)\n\t- [ReentrancyWrite.good()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L36-L43)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L20-L27", - "id": "0c8d97025b73e61d9f897d2b4603c5ad3ca69bad370573776bc0a89982824b9d", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 577, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 82, - "length": 852, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 652, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 31 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 577, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 82, - "length": 852, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "bad0()", - "source_mapping": { - "start": 725, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 577, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 82, - "length": 852, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls" - } - }, - { - "type": "node", - "name": "(success) = msg.sender.call()", - "source_mapping": { - "start": 444, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 383, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 82, - "length": 852, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "external_calls_sending_eth" - } - }, - { - "type": "node", - "name": "bad0()", - "source_mapping": { - "start": 725, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 577, - "length": 161, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 29, - 30, - 31, - 32, - 33, - 34 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 82, - "length": 852, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - }, - { - "type": "node", - "name": "notCalled = false", - "source_mapping": { - "start": 547, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 383, - "length": 188, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ReentrancyWrite", - "source_mapping": { - "start": 82, - "length": 852, - "filename_relative": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "notCalled" - } - } - ], - "description": "Reentrancy in ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#29-34):\n\tExternal calls:\n\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#31)\n\t- bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#33)\n\t\t- (success) = msg.sender.call() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#22)\n\tState variables written after the call(s):\n\t- bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#33)\n\t\t- notCalled = false (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#26)\n\tReentrancyWrite.notCalled (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#8) can be used in cross function reentrancies:\n\t- ReentrancyWrite.bad0() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#20-27)\n\t- ReentrancyWrite.bad1(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#29-34)\n\t- ReentrancyWrite.constructor(address) (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#11-18)\n\t- ReentrancyWrite.good() (tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#36-43)\n", - "markdown": "Reentrancy in [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L29-L34):\n\tExternal calls:\n\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L31)\n\t- [bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L33)\n\t\t- [(success) = msg.sender.call()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L22)\n\tState variables written after the call(s):\n\t- [bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L33)\n\t\t- [notCalled = false](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L26)\n\t[ReentrancyWrite.notCalled](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L8) can be used in cross function reentrancies:\n\t- [ReentrancyWrite.bad0()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L20-L27)\n\t- [ReentrancyWrite.bad1(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L29-L34)\n\t- [ReentrancyWrite.constructor(address)](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L11-L18)\n\t- [ReentrancyWrite.good()](tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L36-L43)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reentrancy-no-eth/0.7.6/reentrancy-write.sol#L29-L34", - "id": "3eb741c75e4861743cc201d67e160aca27ccda58b8cb3bb6dc5e7df7511ca159", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.8.2/comment.sol.0.8.2.ReentrancyReadBeforeWritten.json b/tests/e2e/detectors/test_data/reentrancy-no-eth/0.8.2/comment.sol.0.8.2.ReentrancyReadBeforeWritten.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/reentrancy-no-eth/0.8.2/comment.sol.0.8.2.ReentrancyReadBeforeWritten.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol.0.4.21.ReusedBaseConstructor.json b/tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol.0.4.21.ReusedBaseConstructor.json deleted file mode 100644 index 1e736582d..000000000 --- a/tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol.0.4.21.ReusedBaseConstructor.json +++ /dev/null @@ -1,712 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 295, - "length": 77, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "C", - "source_mapping": { - "start": 176, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 155, - "length": 65, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "C(uint256)" - } - }, - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 295, - "length": 77, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 222, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "E (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#26-30) gives base constructor C.C(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#15-17) arguments more than once in inheritance hierarchy:\n\t- From E (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#26-30) constructor definition\n\t- From D (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#20-24) constructor definition\n", - "markdown": "[E](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L26-L30) gives base constructor [C.C(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L15-L17) arguments more than once in inheritance hierarchy:\n\t- From [E](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L26-L30) constructor definition\n\t- From [D](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L20-L24) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L26-L30", - "id": "085dceba8f0b37580e72952eafe1368bf0d09f10c2f44c0b6ff53ad7e72f92b1", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 295, - "length": 77, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "A", - "source_mapping": { - "start": 34, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "A(uint256)" - } - }, - { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 155, - "length": 65, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 88, - "length": 65, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "E (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#26-30) gives base constructor A.A(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy:\n\t- From C (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#14-18) constructor definition\n\t- From B (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#8-12) constructor definition\n", - "markdown": "[E](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L26-L30) gives base constructor [A.A(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L3-L5) arguments more than once in inheritance hierarchy:\n\t- From [C](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L14-L18) constructor definition\n\t- From [B](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L8-L12) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L26-L30", - "id": "14d6bffb3f1849cfebb7156cb797315fd01ac83911a1261650f702792f4db830", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "F", - "source_mapping": { - "start": 375, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "function", - "name": "A", - "source_mapping": { - "start": 34, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "A(uint256)" - } - }, - { - "type": "contract", - "name": "F", - "source_mapping": { - "start": 375, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 88, - "length": 65, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "F (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#33-38) gives base constructor A.A(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy:\n\t- From F (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#33-38) constructor definition\n\t- From B (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#8-12) constructor definition\n", - "markdown": "[F](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L33-L38) gives base constructor [A.A(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L3-L5) arguments more than once in inheritance hierarchy:\n\t- From [F](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L33-L38) constructor definition\n\t- From [B](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L8-L12) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L33-L38", - "id": "71e08d0e5c44bbc2671e014018a6333bd92db7380a85732bf2d17aa5500f6434", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 222, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "A", - "source_mapping": { - "start": 34, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "A(uint256)" - } - }, - { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 155, - "length": 65, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 88, - "length": 65, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "D (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#20-24) gives base constructor A.A(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy:\n\t- From C (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#14-18) constructor definition\n\t- From B (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#8-12) constructor definition\n", - "markdown": "[D](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L20-L24) gives base constructor [A.A(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L3-L5) arguments more than once in inheritance hierarchy:\n\t- From [C](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L14-L18) constructor definition\n\t- From [B](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L8-L12) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L20-L24", - "id": "7436d3215ee6260f9a4b2f4697fa242225ad3f10e30bfbd162679a5e3fa48f10", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 155, - "length": 65, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "A", - "source_mapping": { - "start": 34, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "A(uint256)" - } - }, - { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 155, - "length": 65, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 88, - "length": 65, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "C (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#14-18) gives base constructor A.A(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy:\n\t- From C (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#14-18) constructor definition\n\t- From B (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#8-12) constructor definition\n", - "markdown": "[C](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L14-L18) gives base constructor [A.A(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L3-L5) arguments more than once in inheritance hierarchy:\n\t- From [C](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L14-L18) constructor definition\n\t- From [B](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L8-L12) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L14-L18", - "id": "d2847fcb309e0ee45dfb303bf749123bbebee692a080ae6a718a76ef785ae8d2", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 295, - "length": 77, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "B", - "source_mapping": { - "start": 109, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 88, - "length": 65, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "B(uint256)" - } - }, - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 295, - "length": 77, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 222, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "E (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#26-30) gives base constructor B.B(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#9-11) arguments more than once in inheritance hierarchy:\n\t- From E (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#26-30) constructor definition\n\t- From D (tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#20-24) constructor definition\n", - "markdown": "[E](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L26-L30) gives base constructor [B.B(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L9-L11) arguments more than once in inheritance hierarchy:\n\t- From [E](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L26-L30) constructor definition\n\t- From [D](tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L20-L24) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.21/reused_base_constructor.sol#L26-L30", - "id": "e79d62c434ba85788dd5087e4994bb136be6b9e8a55e8057b0e30c9b0436abdc", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol.0.4.25.ReusedBaseConstructor.json b/tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol.0.4.25.ReusedBaseConstructor.json deleted file mode 100644 index 0e7952479..000000000 --- a/tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol.0.4.25.ReusedBaseConstructor.json +++ /dev/null @@ -1,1009 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 34, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 87, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(uint256)" - } - }, - { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 157, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 89, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) gives base constructor A.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy:\n\t- From C (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#14-18) constructor definition\n\t- From B (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#8-12) constructor definition\n", - "markdown": "[D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) gives base constructor [A.constructor(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L3-L5) arguments more than once in inheritance hierarchy:\n\t- From [C](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L14-L18) constructor definition\n\t- From [B](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L8-L12) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24", - "id": "1f85bf19873eaee39a8f703b0c783aa86e34c91fad5556ee831eb7c6adcfdb77", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 157, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 34, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 87, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(uint256)" - } - }, - { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 157, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 89, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "C (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#14-18) gives base constructor A.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy:\n\t- From C (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#14-18) constructor definition\n\t- From B (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#8-12) constructor definition\n", - "markdown": "[C](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L14-L18) gives base constructor [A.constructor(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L3-L5) arguments more than once in inheritance hierarchy:\n\t- From [C](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L14-L18) constructor definition\n\t- From [B](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L8-L12) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L14-L18", - "id": "2d9d2b1b6d2540f86fd909f9766e128da573e659f40a50835cc9adef3c4dbee8", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 299, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 178, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 157, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(uint256)" - } - }, - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 299, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) gives base constructor C.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#15-17) arguments more than once in inheritance hierarchy:\n\t- From E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) constructor definition\n\t- From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) contract definition\n\t- From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) constructor definition\n", - "markdown": "[E](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L26-L30) gives base constructor [C.constructor(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L15-L17) arguments more than once in inheritance hierarchy:\n\t- From [E](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L26-L30) constructor definition\n\t- From [D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) contract definition\n\t- From [D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L26-L30", - "id": "33b16377cf3026b60d644e79d92682e6e626d7ad6598387440c9b20fd8aa44fe", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 89, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(uint256)" - } - }, - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) gives base constructor B.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#9-11) arguments more than once in inheritance hierarchy:\n\t- From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) contract definition\n\t- From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) constructor definition\n", - "markdown": "[D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) gives base constructor [B.constructor(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L9-L11) arguments more than once in inheritance hierarchy:\n\t- From [D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) contract definition\n\t- From [D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24", - "id": "5f3b188e7d6c737684f829c3fde96f739cd502b4aba8f3f6e3ceab7decffa618", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 178, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 157, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(uint256)" - } - }, - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) gives base constructor C.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#15-17) arguments more than once in inheritance hierarchy:\n\t- From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) contract definition\n\t- From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) constructor definition\n", - "markdown": "[D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) gives base constructor [C.constructor(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L15-L17) arguments more than once in inheritance hierarchy:\n\t- From [D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) contract definition\n\t- From [D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24", - "id": "b579da8996b6a1a35169bcae74ad8126c68fb0a1819d3977cea3e0e295ff2d5c", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "F", - "source_mapping": { - "start": 380, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 34, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 87, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(uint256)" - } - }, - { - "type": "contract", - "name": "F", - "source_mapping": { - "start": 380, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 33, - 34, - 35, - 36, - 37, - 38 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 89, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "F (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#33-38) gives base constructor A.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy:\n\t- From F (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#33-38) constructor definition\n\t- From B (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#8-12) constructor definition\n", - "markdown": "[F](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L33-L38) gives base constructor [A.constructor(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L3-L5) arguments more than once in inheritance hierarchy:\n\t- From [F](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L33-L38) constructor definition\n\t- From [B](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L8-L12) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L33-L38", - "id": "b74eb2b11af7a004b623d28b035228963f09aed588c95efed636021f426c5cdc", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 299, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 110, - "length": 43, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 89, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(uint256)" - } - }, - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 299, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 299, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 225, - "length": 72, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) gives base constructor B.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#9-11) arguments more than once in inheritance hierarchy:\n\t- From E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) contract definition\n\t- From E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) constructor definition\n\t- From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) contract definition\n\t- From D (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#20-24) constructor definition\n", - "markdown": "[E](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L26-L30) gives base constructor [B.constructor(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L9-L11) arguments more than once in inheritance hierarchy:\n\t- From [E](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L26-L30) contract definition\n\t- From [E](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L26-L30) constructor definition\n\t- From [D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) contract definition\n\t- From [D](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L20-L24) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L26-L30", - "id": "ee7d44329ffb81dc06e2a2f1b3a166a5115287a1175b32cf828b57479afbc4ae", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "E", - "source_mapping": { - "start": 299, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 34, - "length": 51, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 87, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(uint256)" - } - }, - { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 157, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 89, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "E (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#26-30) gives base constructor A.constructor(uint256) (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#3-5) arguments more than once in inheritance hierarchy:\n\t- From C (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#14-18) constructor definition\n\t- From B (tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#8-12) constructor definition\n", - "markdown": "[E](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L26-L30) gives base constructor [A.constructor(uint256)](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L3-L5) arguments more than once in inheritance hierarchy:\n\t- From [C](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L14-L18) constructor definition\n\t- From [B](tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L8-L12) constructor definition\n", - "first_markdown_element": "tests/e2e/detectors/test_data/reused-constructor/0.4.25/reused_base_constructor.sol#L26-L30", - "id": "f5c86955c15d44fe9471680d12d37843a15ba934cbb124786cadab0919ea68d1", - "check": "reused-constructor", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/rtlo/0.4.25/right_to_left_override.sol.0.4.25.RightToLeftOverride.json b/tests/e2e/detectors/test_data/rtlo/0.4.25/right_to_left_override.sol.0.4.25.RightToLeftOverride.json deleted file mode 100644 index f274accdf..000000000 --- a/tests/e2e/detectors/test_data/rtlo/0.4.25/right_to_left_override.sol.0.4.25.RightToLeftOverride.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "other", - "name": "rtlo-character", - "source_mapping": { - "start": 96, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/rtlo/0.4.25/right_to_left_override.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/rtlo/0.4.25/right_to_left_override.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 18, - "ending_column": 21 - } - } - ], - "description": "tests/e2e/detectors/test_data/rtlo/0.4.25/right_to_left_override.sol contains a unicode right-to-left-override character at byte offset 96:\n\t- b' test1(/*A\\xe2\\x80\\xae/*B*/2 , 1/*\\xe2\\x80\\xad'\n", - "markdown": "tests/e2e/detectors/test_data/rtlo/0.4.25/right_to_left_override.sol contains a unicode right-to-left-override character at byte offset 96:\n\t- b' test1(/*A\\xe2\\x80\\xae/*B*/2 , 1/*\\xe2\\x80\\xad'\n", - "first_markdown_element": "", - "id": "bb5125457e77dc20d54c832822ee40ec1ea295724482eeb47b96476dd9fee7eb", - "check": "rtlo", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/rtlo/0.5.16/right_to_left_override.sol.0.5.16.RightToLeftOverride.json b/tests/e2e/detectors/test_data/rtlo/0.5.16/right_to_left_override.sol.0.5.16.RightToLeftOverride.json deleted file mode 100644 index 6bd7bd699..000000000 --- a/tests/e2e/detectors/test_data/rtlo/0.5.16/right_to_left_override.sol.0.5.16.RightToLeftOverride.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "other", - "name": "rtlo-character", - "source_mapping": { - "start": 96, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/rtlo/0.5.16/right_to_left_override.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/rtlo/0.5.16/right_to_left_override.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 18, - "ending_column": 21 - } - } - ], - "description": "tests/e2e/detectors/test_data/rtlo/0.5.16/right_to_left_override.sol contains a unicode right-to-left-override character at byte offset 96:\n\t- b' test1(/*A\\xe2\\x80\\xae/*B*/2 , 1/*\\xe2\\x80\\xad'\n", - "markdown": "tests/e2e/detectors/test_data/rtlo/0.5.16/right_to_left_override.sol contains a unicode right-to-left-override character at byte offset 96:\n\t- b' test1(/*A\\xe2\\x80\\xae/*B*/2 , 1/*\\xe2\\x80\\xad'\n", - "first_markdown_element": "", - "id": "721d2f64c7a644099d98238b8af0172c84722cf1702ed29537d0fc701f0d8d88", - "check": "rtlo", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/rtlo/0.6.11/right_to_left_override.sol.0.6.11.RightToLeftOverride.json b/tests/e2e/detectors/test_data/rtlo/0.6.11/right_to_left_override.sol.0.6.11.RightToLeftOverride.json deleted file mode 100644 index 3dbac6de8..000000000 --- a/tests/e2e/detectors/test_data/rtlo/0.6.11/right_to_left_override.sol.0.6.11.RightToLeftOverride.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "other", - "name": "rtlo-character", - "source_mapping": { - "start": 96, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/rtlo/0.6.11/right_to_left_override.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/rtlo/0.6.11/right_to_left_override.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 18, - "ending_column": 21 - } - } - ], - "description": "tests/e2e/detectors/test_data/rtlo/0.6.11/right_to_left_override.sol contains a unicode right-to-left-override character at byte offset 96:\n\t- b' test1(/*A\\xe2\\x80\\xae/*B*/2 , 1/*\\xe2\\x80\\xad'\n", - "markdown": "tests/e2e/detectors/test_data/rtlo/0.6.11/right_to_left_override.sol contains a unicode right-to-left-override character at byte offset 96:\n\t- b' test1(/*A\\xe2\\x80\\xae/*B*/2 , 1/*\\xe2\\x80\\xad'\n", - "first_markdown_element": "", - "id": "47d896764ded59ddc17f6ded902e9826d1688fd3af59985d184d30fa6b5e6976", - "check": "rtlo", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol.0.8.0.RightToLeftOverride.json b/tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol.0.8.0.RightToLeftOverride.json deleted file mode 100644 index 0dc779146..000000000 --- a/tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol.0.8.0.RightToLeftOverride.json +++ /dev/null @@ -1,88 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "other", - "name": "rtlo-character", - "source_mapping": { - "start": 336, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 14, - "ending_column": 17 - } - } - ], - "description": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol contains a unicode right-to-left-override character at byte offset 336:\n\t- b' /*ok \\xe2\\x80\\xaeaaa\\xe2\\x80\\xaebbb\\xe2\\x80\\xaeccc\\xe2\\x80\\xacddd\\xe2\\x80\\xaceee\\xe2\\x80\\xac*/'\n", - "markdown": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol contains a unicode right-to-left-override character at byte offset 336:\n\t- b' /*ok \\xe2\\x80\\xaeaaa\\xe2\\x80\\xaebbb\\xe2\\x80\\xaeccc\\xe2\\x80\\xacddd\\xe2\\x80\\xaceee\\xe2\\x80\\xac*/'\n", - "first_markdown_element": "", - "id": "8de5d775d29d586295f60570ff608aef85da40156380c246eada316dbaf94db5", - "check": "rtlo", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "other", - "name": "rtlo-character", - "source_mapping": { - "start": 348, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 26, - "ending_column": 29 - } - } - ], - "description": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol contains a unicode right-to-left-override character at byte offset 348:\n\t- b'\\x80\\xaebbb\\xe2\\x80\\xaeccc\\xe2\\x80\\xacddd\\xe2\\x80\\xaceee\\xe2\\x80\\xac*/'\n", - "markdown": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol contains a unicode right-to-left-override character at byte offset 348:\n\t- b'\\x80\\xaebbb\\xe2\\x80\\xaeccc\\xe2\\x80\\xacddd\\xe2\\x80\\xaceee\\xe2\\x80\\xac*/'\n", - "first_markdown_element": "", - "id": "98f55f22798ec4805d32c89953fc385f02f1e69ebfc22bde91d64c5676098a6a", - "check": "rtlo", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "other", - "name": "rtlo-character", - "source_mapping": { - "start": 342, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 20, - "ending_column": 23 - } - } - ], - "description": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol contains a unicode right-to-left-override character at byte offset 342:\n\t- b'\\x80\\xaeaaa\\xe2\\x80\\xaebbb\\xe2\\x80\\xaeccc\\xe2\\x80\\xacddd\\xe2\\x80\\xaceee\\xe2\\x80\\xac*/'\n", - "markdown": "tests/e2e/detectors/test_data/rtlo/0.8.0/unicode_direction_override.sol contains a unicode right-to-left-override character at byte offset 342:\n\t- b'\\x80\\xaeaaa\\xe2\\x80\\xaebbb\\xe2\\x80\\xaeccc\\xe2\\x80\\xacddd\\xe2\\x80\\xaceee\\xe2\\x80\\xac*/'\n", - "first_markdown_element": "", - "id": "fa1214e29688e5f4e8b915ec0e80bb5ffe0bae47468d588398bc209ed990cdfc", - "check": "rtlo", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol.0.4.25.ShadowingAbstractDetection.json b/tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol.0.4.25.ShadowingAbstractDetection.json deleted file mode 100644 index d9f03c8a3..000000000 --- a/tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol.0.4.25.ShadowingAbstractDetection.json +++ /dev/null @@ -1,93 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "owner", - "source_mapping": { - "start": 92, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DerivedContract", - "source_mapping": { - "start": 46, - "length": 63, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "variable", - "name": "owner", - "source_mapping": { - "start": 27, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 0, - "length": 44, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "DerivedContract.owner (tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol#7) shadows:\n\t- BaseContract.owner (tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol#2)\n", - "markdown": "[DerivedContract.owner](tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol#L7) shadows:\n\t- [BaseContract.owner](tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol#L2)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-abstract/0.4.25/shadowing_abstract.sol#L7", - "id": "9c5c3fc5091b9ecd6ec271fdbb3036d9d3426cdf9a09d6cc293fd7de9240e4ab", - "check": "shadowing-abstract", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol.0.5.16.ShadowingAbstractDetection.json b/tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol.0.5.16.ShadowingAbstractDetection.json deleted file mode 100644 index 038141f6b..000000000 --- a/tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol.0.5.16.ShadowingAbstractDetection.json +++ /dev/null @@ -1,93 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "owner", - "source_mapping": { - "start": 92, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DerivedContract", - "source_mapping": { - "start": 46, - "length": 63, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "variable", - "name": "owner", - "source_mapping": { - "start": 27, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 0, - "length": 44, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "DerivedContract.owner (tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol#7) shadows:\n\t- BaseContract.owner (tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol#2)\n", - "markdown": "[DerivedContract.owner](tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol#L7) shadows:\n\t- [BaseContract.owner](tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol#L2)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-abstract/0.5.16/shadowing_abstract.sol#L7", - "id": "9c5c3fc5091b9ecd6ec271fdbb3036d9d3426cdf9a09d6cc293fd7de9240e4ab", - "check": "shadowing-abstract", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol.0.7.5.ShadowingAbstractDetection.json b/tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol.0.7.5.ShadowingAbstractDetection.json deleted file mode 100644 index a42cbaf6a..000000000 --- a/tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol.0.7.5.ShadowingAbstractDetection.json +++ /dev/null @@ -1,91 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 127, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DerivedContract", - "source_mapping": { - "start": 81, - "length": 73, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 51, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 5, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 24, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "DerivedContract.__gap (tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol#7) shadows:\n\t- BaseContract.__gap (tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol#3)\n", - "markdown": "[DerivedContract.__gap](tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol#L7) shadows:\n\t- [BaseContract.__gap](tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/public_gap_variable.sol#L7", - "id": "8f81b2b4b3285fe96f0b580cdd2144cc6cf6808d970ba68878b9901744069c4c", - "check": "shadowing-abstract", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/shadowing_state_variable.sol.0.7.5.ShadowingAbstractDetection.json b/tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/shadowing_state_variable.sol.0.7.5.ShadowingAbstractDetection.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/shadowing-abstract/0.7.5/shadowing_state_variable.sol.0.7.5.ShadowingAbstractDetection.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol.0.4.25.BuiltinSymbolShadowing.json b/tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol.0.4.25.BuiltinSymbolShadowing.json deleted file mode 100644 index a9e1bc63f..000000000 --- a/tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol.0.4.25.BuiltinSymbolShadowing.json +++ /dev/null @@ -1,799 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "mutable", - "source_mapping": { - "start": 527, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 32 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Reserved", - "source_mapping": { - "start": 504, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "Reserved.mutable (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#32) (state variable) shadows built-in symbol\"\n", - "markdown": "[Reserved.mutable](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L32) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L32", - "id": "11840553a9e11623596d7a07275814e65a5b1d90277ae0e2954cd8ce74d6a6d2", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "ecrecover", - "source_mapping": { - "start": 170, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 122, - "length": 139, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "ExtendedContract.ecrecover (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#11) (state variable) shadows built-in symbol\"\n", - "markdown": "[ExtendedContract.ecrecover](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L11) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L11", - "id": "39737925cf3bd4ebf9a1c7bbe39da8b80ba28e5a3d93a938d1a4cca78a6a436d", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "keccak256", - "source_mapping": { - "start": 449, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 9, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "require", - "source_mapping": { - "start": 380, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 263, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "require()" - } - } - } - } - ], - "description": "FurtherExtendedContract.require().keccak256 (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#25) (local variable) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.require().keccak256](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L25) (local variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L25", - "id": "40f0453d27abf2d9ed76fe60853b6e2e0cd9a443d639e9da457460ea02b2bdc7", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "abi", - "source_mapping": { - "start": 365, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 5, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 263, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.abi (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#21) (state variable) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.abi](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L21) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L21", - "id": "4665243a2df090e3543ab26447528fa3401916f4669fe1264145891846d4bc40", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "blockhash", - "source_mapping": { - "start": 54, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 26, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "BaseContract.blockhash (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#4) (state variable) shadows built-in symbol\"\n", - "markdown": "[BaseContract.blockhash](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L4) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L4", - "id": "61d1c1452e694c321d00576decdf35c62efbe8860f664273955fadce5e063cc8", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "this", - "source_mapping": { - "start": 346, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 263, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.this (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#20) (state variable) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.this](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L20) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L20", - "id": "87e1cc0cb95181dd120d3e6e55d89fdc7b5cd01da2f89cd7a3d105738f57c10b", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "now", - "source_mapping": { - "start": 74, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 26, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "BaseContract.now (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#5) (state variable) shadows built-in symbol\"\n", - "markdown": "[BaseContract.now](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L5) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L5", - "id": "942ad0405af0bc533374dded6e2474c53892747c98d2df14d59cbb6840fa18b3", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "revert", - "source_mapping": { - "start": 89, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 26, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "revert(bool)" - } - } - ], - "description": "BaseContractrevert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#7) (event) shadows built-in symbol\"\n", - "markdown": "[BaseContractrevert(bool)](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L7) (event) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L7", - "id": "9c428e61cb4832d899b2bb711c8d428154425dbadf5dfc2e2d857254824d8f72", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "msg", - "source_mapping": { - "start": 244, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 9, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "assert", - "source_mapping": { - "start": 195, - "length": 64, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 122, - "length": 139, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "assert(bool)" - } - } - } - } - ], - "description": "ExtendedContract.assert(bool).msg (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#14) (local variable) shadows built-in symbol\"\n", - "markdown": "[ExtendedContract.assert(bool).msg](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L14) (local variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L14", - "id": "a2a7e1e27320d38e52b51c9b1ec67cca0a403673ff6fdd59652f9cd8425d011f", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "assert", - "source_mapping": { - "start": 195, - "length": 64, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 122, - "length": 139, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "assert(bool)" - } - } - ], - "description": "ExtendedContract.assert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#13-15) (function) shadows built-in symbol\"\n", - "markdown": "[ExtendedContract.assert(bool)](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L13-L15) (function) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L13-L15", - "id": "b3a1b23c1daed52b1a2ff5fb76d4fcdf2bc0b2126524303321cf8e7835116d6f", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "sha3", - "source_mapping": { - "start": 473, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "require", - "source_mapping": { - "start": 380, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 263, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "require()" - } - } - } - } - ], - "description": "FurtherExtendedContract.require().sha3 (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#26) (local variable) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.require().sha3](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L26) (local variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L26", - "id": "c481dbbf77c99cb337740a656ebabae1c89bf13b9d7b7d315dcf54feeab1cd63", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "blockhash", - "source_mapping": { - "start": 322, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 263, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.blockhash (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#19) (state variable) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.blockhash](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L19) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L19", - "id": "d405ccbec679f921252d475591a890a89a023b375dc4994119967693692f8da9", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "require", - "source_mapping": { - "start": 380, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 263, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "require()" - } - } - ], - "description": "FurtherExtendedContract.require() (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#23-28) (modifier) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.require()](tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L23-L28) (modifier) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#L23-L28", - "id": "db6c26c9a7c319c1a34c486e6e625c0906a2b118f8cd72f38a38c167832aab4f", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol.0.5.16.BuiltinSymbolShadowing.json b/tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol.0.5.16.BuiltinSymbolShadowing.json deleted file mode 100644 index e12347591..000000000 --- a/tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol.0.5.16.BuiltinSymbolShadowing.json +++ /dev/null @@ -1,749 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "ecrecover", - "source_mapping": { - "start": 173, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 125, - "length": 139, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "ExtendedContract.ecrecover (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#11) (state variable) shadows built-in symbol\"\n", - "markdown": "[ExtendedContract.ecrecover](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L11) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L11", - "id": "39737925cf3bd4ebf9a1c7bbe39da8b80ba28e5a3d93a938d1a4cca78a6a436d", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "keccak256", - "source_mapping": { - "start": 452, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 9, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "require", - "source_mapping": { - "start": 383, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 266, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "require()" - } - } - } - } - ], - "description": "FurtherExtendedContract.require().keccak256 (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#25) (local variable) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.require().keccak256](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L25) (local variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L25", - "id": "40f0453d27abf2d9ed76fe60853b6e2e0cd9a443d639e9da457460ea02b2bdc7", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "abi", - "source_mapping": { - "start": 368, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 5, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 266, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.abi (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#21) (state variable) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.abi](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L21) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L21", - "id": "4665243a2df090e3543ab26447528fa3401916f4669fe1264145891846d4bc40", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "blockhash", - "source_mapping": { - "start": 57, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 29, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "BaseContract.blockhash (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#4) (state variable) shadows built-in symbol\"\n", - "markdown": "[BaseContract.blockhash](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L4) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L4", - "id": "61d1c1452e694c321d00576decdf35c62efbe8860f664273955fadce5e063cc8", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "this", - "source_mapping": { - "start": 349, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 20 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 266, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.this (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#20) (state variable) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.this](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L20) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L20", - "id": "87e1cc0cb95181dd120d3e6e55d89fdc7b5cd01da2f89cd7a3d105738f57c10b", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "now", - "source_mapping": { - "start": 77, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 13 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 29, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "BaseContract.now (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#5) (state variable) shadows built-in symbol\"\n", - "markdown": "[BaseContract.now](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L5) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L5", - "id": "942ad0405af0bc533374dded6e2474c53892747c98d2df14d59cbb6840fa18b3", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "event", - "name": "revert", - "source_mapping": { - "start": 92, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 29, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "revert(bool)" - } - } - ], - "description": "BaseContractrevert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#7) (event) shadows built-in symbol\"\n", - "markdown": "[BaseContractrevert(bool)](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L7) (event) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L7", - "id": "9c428e61cb4832d899b2bb711c8d428154425dbadf5dfc2e2d857254824d8f72", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "msg", - "source_mapping": { - "start": 247, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 9, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "assert", - "source_mapping": { - "start": 198, - "length": 64, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 125, - "length": 139, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "assert(bool)" - } - } - } - } - ], - "description": "ExtendedContract.assert(bool).msg (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#14) (local variable) shadows built-in symbol\"\n", - "markdown": "[ExtendedContract.assert(bool).msg](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L14) (local variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L14", - "id": "a2a7e1e27320d38e52b51c9b1ec67cca0a403673ff6fdd59652f9cd8425d011f", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "assert", - "source_mapping": { - "start": 198, - "length": 64, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 125, - "length": 139, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "assert(bool)" - } - } - ], - "description": "ExtendedContract.assert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#13-15) (function) shadows built-in symbol\"\n", - "markdown": "[ExtendedContract.assert(bool)](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L13-L15) (function) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L13-L15", - "id": "b3a1b23c1daed52b1a2ff5fb76d4fcdf2bc0b2126524303321cf8e7835116d6f", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "sha3", - "source_mapping": { - "start": 476, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 26 - ], - "starting_column": 9, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "require", - "source_mapping": { - "start": 383, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 266, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "require()" - } - } - } - } - ], - "description": "FurtherExtendedContract.require().sha3 (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#26) (local variable) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.require().sha3](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L26) (local variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L26", - "id": "c481dbbf77c99cb337740a656ebabae1c89bf13b9d7b7d315dcf54feeab1cd63", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "blockhash", - "source_mapping": { - "start": 325, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 19 - ], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 266, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.blockhash (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#19) (state variable) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.blockhash](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L19) (state variable) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L19", - "id": "d405ccbec679f921252d475591a890a89a023b375dc4994119967693692f8da9", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "require", - "source_mapping": { - "start": 383, - "length": 120, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26, - 27, - 28 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 266, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol", - "is_dependency": false, - "lines": [ - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "require()" - } - } - ], - "description": "FurtherExtendedContract.require() (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#23-28) (modifier) shadows built-in symbol\"\n", - "markdown": "[FurtherExtendedContract.require()](tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L23-L28) (modifier) shadows built-in symbol\"\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#L23-L28", - "id": "db6c26c9a7c319c1a34c486e6e625c0906a2b118f8cd72f38a38c167832aab4f", - "check": "shadowing-builtin", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol.0.4.25.LocalShadowing.json b/tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol.0.4.25.LocalShadowing.json deleted file mode 100644 index 01d1ce42c..000000000 --- a/tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol.0.4.25.LocalShadowing.json +++ /dev/null @@ -1,814 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 376, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 30, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 351, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 197, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 256, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 197, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 133, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 85, - "length": 110, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 54, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 26, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).x (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.x (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#17) (state variable)\n\t- ExtendedContract.x (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#9) (state variable)\n\t- BaseContract.x (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#4) (state variable)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).x](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L25) shadows:\n\t- [FurtherExtendedContract.x](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L17) (state variable)\n\t- [ExtendedContract.x](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L9) (state variable)\n\t- [BaseContract.x](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L4) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L25", - "id": "0991435c12aa2d6f15e8da2a00a18e9c58ef65dcf31137cdb561655317353247", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "state", - "source_mapping": { - "start": 533, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 30 - ], - "starting_column": 52, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowedState", - "source_mapping": { - "start": 486, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 434, - "length": 225, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shadowedState()" - } - } - } - }, - { - "type": "variable", - "name": "state", - "source_mapping": { - "start": 470, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 434, - "length": 225, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "LocalReturnVariables.shadowedState().state (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#30) shadows:\n\t- LocalReturnVariables.state (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#29) (state variable)\n", - "markdown": "[LocalReturnVariables.shadowedState().state](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L30) shadows:\n\t- [LocalReturnVariables.state](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L29) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L30", - "id": "1b0030affabcff703e57e4f388b86dbda0f412e51ba8d15248bcae9e4748a012", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 398, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 52, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 351, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 197, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 70, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 26, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows:\n\t- BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#5) (state variable)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).y](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L25) shadows:\n\t- [BaseContract.y](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L5) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L25", - "id": "465bd81cbb09a3d2cc84ea6102fb059296f1970e85e2d86a171f8219f1a34508", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 421, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 75, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 351, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 197, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "event", - "name": "v", - "source_mapping": { - "start": 183, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 85, - "length": 110, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "v()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#13) (event)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).v](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L25) shadows:\n\t- [ExtendedContractv()](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L13) (event)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L25", - "id": "973e31cc30dc7a3e1f089dfa5848234075f237f78fa492c772b1083e12c79054", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "w", - "source_mapping": { - "start": 413, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 67, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 351, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 197, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "function", - "name": "w", - "source_mapping": { - "start": 274, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 197, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "w()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#20-23) (modifier)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).w](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L25) shadows:\n\t- [FurtherExtendedContract.w()](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L20-L23) (modifier)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L25", - "id": "a94a2b9331482c75582868e6d3cc5c9b01487e7505f219abcf36a20d76e0b089", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "z", - "source_mapping": { - "start": 405, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 59, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 351, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 197, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "function", - "name": "z", - "source_mapping": { - "start": 150, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 85, - "length": 110, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "z()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).z (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContract.z() (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#11) (function)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).z](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L25) shadows:\n\t- [ExtendedContract.z()](tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L11) (function)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#L25", - "id": "e3d2948e9c1252fe84e0d7e58f6682af7af84ef209f6e71f039faccabf07b0bd", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol.0.5.16.LocalShadowing.json b/tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol.0.5.16.LocalShadowing.json deleted file mode 100644 index 11c615913..000000000 --- a/tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol.0.5.16.LocalShadowing.json +++ /dev/null @@ -1,977 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 379, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 30, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 354, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 200, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 259, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 200, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 136, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 88, - "length": 110, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 57, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 29, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).x (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.x (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#17) (state variable)\n\t- ExtendedContract.x (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#9) (state variable)\n\t- BaseContract.x (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#4) (state variable)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).x](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L25) shadows:\n\t- [FurtherExtendedContract.x](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L17) (state variable)\n\t- [ExtendedContract.x](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L9) (state variable)\n\t- [BaseContract.x](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L4) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L25", - "id": "0991435c12aa2d6f15e8da2a00a18e9c58ef65dcf31137cdb561655317353247", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "state", - "source_mapping": { - "start": 536, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 30 - ], - "starting_column": 52, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowedState", - "source_mapping": { - "start": 489, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 437, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shadowedState()" - } - } - } - }, - { - "type": "variable", - "name": "state", - "source_mapping": { - "start": 473, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 437, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "LocalReturnVariables.shadowedState().state (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#30) shadows:\n\t- LocalReturnVariables.state (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#29) (state variable)\n", - "markdown": "[LocalReturnVariables.shadowedState().state](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L30) shadows:\n\t- [LocalReturnVariables.state](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L29) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L30", - "id": "1b0030affabcff703e57e4f388b86dbda0f412e51ba8d15248bcae9e4748a012", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 401, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 52, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 354, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 200, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 73, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 29, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows:\n\t- BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#5) (state variable)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).y](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L25) shadows:\n\t- [BaseContract.y](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L5) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L25", - "id": "465bd81cbb09a3d2cc84ea6102fb059296f1970e85e2d86a171f8219f1a34508", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 424, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 75, - "ending_column": 81 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 354, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 200, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "event", - "name": "v", - "source_mapping": { - "start": 186, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 88, - "length": 110, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "v()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#13) (event)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).v](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L25) shadows:\n\t- [ExtendedContractv()](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L13) (event)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L25", - "id": "973e31cc30dc7a3e1f089dfa5848234075f237f78fa492c772b1083e12c79054", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "w", - "source_mapping": { - "start": 416, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 67, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 354, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 200, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "function", - "name": "w", - "source_mapping": { - "start": 277, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 200, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "w()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#20-23) (modifier)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).w](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L25) shadows:\n\t- [FurtherExtendedContract.w()](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L20-L23) (modifier)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L25", - "id": "a94a2b9331482c75582868e6d3cc5c9b01487e7505f219abcf36a20d76e0b089", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "local_scope_0", - "source_mapping": { - "start": 653, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 9, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowedReturn", - "source_mapping": { - "start": 583, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 33, - 34, - 35, - 36 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 437, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shadowedReturn()" - } - } - } - }, - { - "type": "variable", - "name": "local", - "source_mapping": { - "start": 631, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 53, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowedReturn", - "source_mapping": { - "start": 583, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 33, - 34, - 35, - 36 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 437, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shadowedReturn()" - } - } - } - } - ], - "description": "LocalReturnVariables.shadowedReturn().local_scope_0 (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#34) shadows:\n\t- LocalReturnVariables.shadowedReturn().local (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#33) (return variable)\n", - "markdown": "[LocalReturnVariables.shadowedReturn().local_scope_0](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L34) shadows:\n\t- [LocalReturnVariables.shadowedReturn().local](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L33) (return variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L34", - "id": "cd63bdf3f6420e4e109d20ec44b52fcbcbde1c5b6a0701fc6994b35960ab1e85", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "z", - "source_mapping": { - "start": 408, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 59, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 354, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 200, - "length": 235, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "function", - "name": "z", - "source_mapping": { - "start": 153, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 88, - "length": 110, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "z()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).z (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContract.z() (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#11) (function)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).z](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L25) shadows:\n\t- [ExtendedContract.z()](tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L11) (function)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#L25", - "id": "e3d2948e9c1252fe84e0d7e58f6682af7af84ef209f6e71f039faccabf07b0bd", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol.0.6.11.LocalShadowing.json b/tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol.0.6.11.LocalShadowing.json deleted file mode 100644 index 834751662..000000000 --- a/tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol.0.6.11.LocalShadowing.json +++ /dev/null @@ -1,896 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "state", - "source_mapping": { - "start": 541, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 30 - ], - "starting_column": 52, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowedState", - "source_mapping": { - "start": 494, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 442, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shadowedState()" - } - } - } - }, - { - "type": "variable", - "name": "state", - "source_mapping": { - "start": 478, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 442, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 0 - } - } - } - } - ], - "description": "LocalReturnVariables.shadowedState().state (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#30) shadows:\n\t- LocalReturnVariables.state (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#29) (state variable)\n", - "markdown": "[LocalReturnVariables.shadowedState().state](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L30) shadows:\n\t- [LocalReturnVariables.state](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L29) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L30", - "id": "1b0030affabcff703e57e4f388b86dbda0f412e51ba8d15248bcae9e4748a012", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 406, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 54, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 357, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 73, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 29, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows:\n\t- BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#5) (state variable)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).y](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L25) shadows:\n\t- [BaseContract.y](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L5) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L25", - "id": "465bd81cbb09a3d2cc84ea6102fb059296f1970e85e2d86a171f8219f1a34508", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 429, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 77, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 357, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "event", - "name": "v", - "source_mapping": { - "start": 187, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 88, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "v()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#13) (event)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).v](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L25) shadows:\n\t- [ExtendedContractv()](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L13) (event)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L25", - "id": "973e31cc30dc7a3e1f089dfa5848234075f237f78fa492c772b1083e12c79054", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "w", - "source_mapping": { - "start": 421, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 69, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 357, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "function", - "name": "w", - "source_mapping": { - "start": 280, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "w()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#20-23) (modifier)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).w](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L25) shadows:\n\t- [FurtherExtendedContract.w()](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L20-L23) (modifier)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L25", - "id": "a94a2b9331482c75582868e6d3cc5c9b01487e7505f219abcf36a20d76e0b089", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__x", - "source_mapping": { - "start": 382, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 30, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 357, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "variable", - "name": "__x", - "source_mapping": { - "start": 260, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).__x (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.__x (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#17) (state variable)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).__x](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L25) shadows:\n\t- [FurtherExtendedContract.__x](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L17) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L25", - "id": "cd61765f88a1447471f5c75c7a488af44534d81be3998f5d01a6b5fa8f693327", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "local_scope_0", - "source_mapping": { - "start": 658, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 9, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowedReturn", - "source_mapping": { - "start": 588, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 33, - 34, - 35, - 36 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 442, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shadowedReturn()" - } - } - } - }, - { - "type": "variable", - "name": "local", - "source_mapping": { - "start": 636, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 53, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowedReturn", - "source_mapping": { - "start": 588, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 33, - 34, - 35, - 36 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 442, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shadowedReturn()" - } - } - } - } - ], - "description": "LocalReturnVariables.shadowedReturn().local_scope_0 (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#34) shadows:\n\t- LocalReturnVariables.shadowedReturn().local (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#33) (return variable)\n", - "markdown": "[LocalReturnVariables.shadowedReturn().local_scope_0](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L34) shadows:\n\t- [LocalReturnVariables.shadowedReturn().local](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L33) (return variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L34", - "id": "cd63bdf3f6420e4e109d20ec44b52fcbcbde1c5b6a0701fc6994b35960ab1e85", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "z", - "source_mapping": { - "start": 413, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 61, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 357, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "function", - "name": "z", - "source_mapping": { - "start": 154, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 88, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "z()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).z (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContract.z() (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#11) (function)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).z](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L25) shadows:\n\t- [ExtendedContract.z()](tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L11) (function)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#L25", - "id": "e3d2948e9c1252fe84e0d7e58f6682af7af84ef209f6e71f039faccabf07b0bd", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol.0.7.6.LocalShadowing.json b/tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol.0.7.6.LocalShadowing.json deleted file mode 100644 index ebeacebd5..000000000 --- a/tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol.0.7.6.LocalShadowing.json +++ /dev/null @@ -1,892 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "state", - "source_mapping": { - "start": 541, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 30 - ], - "starting_column": 52, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowedState", - "source_mapping": { - "start": 494, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 30, - 31, - 32 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 442, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowedState()" - } - } - } - }, - { - "type": "variable", - "name": "state", - "source_mapping": { - "start": 478, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 29 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 442, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "LocalReturnVariables.shadowedState().state (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#30) shadows:\n\t- LocalReturnVariables.state (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#29) (state variable)\n", - "markdown": "[LocalReturnVariables.shadowedState().state](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L30) shadows:\n\t- [LocalReturnVariables.state](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L29) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L30", - "id": "1b0030affabcff703e57e4f388b86dbda0f412e51ba8d15248bcae9e4748a012", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 406, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 54, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 357, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "variable", - "name": "y", - "source_mapping": { - "start": 73, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 29, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows:\n\t- BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#5) (state variable)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).y](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L25) shadows:\n\t- [BaseContract.y](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L5) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L25", - "id": "465bd81cbb09a3d2cc84ea6102fb059296f1970e85e2d86a171f8219f1a34508", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 429, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 77, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 357, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "event", - "name": "v", - "source_mapping": { - "start": 187, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 88, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "v()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#13) (event)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).v](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L25) shadows:\n\t- [ExtendedContractv()](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L13) (event)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L25", - "id": "973e31cc30dc7a3e1f089dfa5848234075f237f78fa492c772b1083e12c79054", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "w", - "source_mapping": { - "start": 421, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 69, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 357, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "function", - "name": "w", - "source_mapping": { - "start": 280, - "length": 71, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "w()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#20-23) (modifier)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).w](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L25) shadows:\n\t- [FurtherExtendedContract.w()](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L20-L23) (modifier)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L25", - "id": "a94a2b9331482c75582868e6d3cc5c9b01487e7505f219abcf36a20d76e0b089", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "__x", - "source_mapping": { - "start": 382, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 30, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 357, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "variable", - "name": "__x", - "source_mapping": { - "start": 260, - "length": 12, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).__x (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.__x (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#17) (state variable)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).__x](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L25) shadows:\n\t- [FurtherExtendedContract.__x](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L17) (state variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L25", - "id": "cd61765f88a1447471f5c75c7a488af44534d81be3998f5d01a6b5fa8f693327", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "local_scope_0", - "source_mapping": { - "start": 658, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 34 - ], - "starting_column": 9, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowedReturn", - "source_mapping": { - "start": 588, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 33, - 34, - 35, - 36 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 442, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowedReturn()" - } - } - } - }, - { - "type": "variable", - "name": "local", - "source_mapping": { - "start": 636, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 33 - ], - "starting_column": 53, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowedReturn", - "source_mapping": { - "start": 588, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 33, - 34, - 35, - 36 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LocalReturnVariables", - "source_mapping": { - "start": 442, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowedReturn()" - } - } - } - } - ], - "description": "LocalReturnVariables.shadowedReturn().local_scope_0 (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#34) shadows:\n\t- LocalReturnVariables.shadowedReturn().local (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#33) (return variable)\n", - "markdown": "[LocalReturnVariables.shadowedReturn().local_scope_0](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L34) shadows:\n\t- [LocalReturnVariables.shadowedReturn().local](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L33) (return variable)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L34", - "id": "cd63bdf3f6420e4e109d20ec44b52fcbcbde1c5b6a0701fc6994b35960ab1e85", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "z", - "source_mapping": { - "start": 413, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 61, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shadowingParent", - "source_mapping": { - "start": 357, - "length": 81, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 25 - ], - "starting_column": 5, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "FurtherExtendedContract", - "source_mapping": { - "start": 201, - "length": 239, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "shadowingParent(uint256)" - } - } - } - }, - { - "type": "function", - "name": "z", - "source_mapping": { - "start": 154, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 5, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ExtendedContract", - "source_mapping": { - "start": 88, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "z()" - } - } - ], - "description": "FurtherExtendedContract.shadowingParent(uint256).z (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContract.z() (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#11) (function)\n", - "markdown": "[FurtherExtendedContract.shadowingParent(uint256).z](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L25) shadows:\n\t- [ExtendedContract.z()](tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L11) (function)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#L25", - "id": "e3d2948e9c1252fe84e0d7e58f6682af7af84ef209f6e71f039faccabf07b0bd", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol.0.4.25.StateShadowing.json b/tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol.0.4.25.StateShadowing.json deleted file mode 100644 index 7a085c8ba..000000000 --- a/tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol.0.4.25.StateShadowing.json +++ /dev/null @@ -1,105 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "owner", - "source_mapping": { - "start": 172, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DerivedContract", - "source_mapping": { - "start": 126, - "length": 210, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "variable", - "name": "owner", - "source_mapping": { - "start": 27, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 0, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "DerivedContract.owner (tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol#12) shadows:\n\t- BaseContract.owner (tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol#2)\n", - "markdown": "[DerivedContract.owner](tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol#L12) shadows:\n\t- [BaseContract.owner](tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol#L2)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-state/0.4.25/shadowing_state_variable.sol#L12", - "id": "9c5c3fc5091b9ecd6ec271fdbb3036d9d3426cdf9a09d6cc293fd7de9240e4ab", - "check": "shadowing-state", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol.0.5.16.StateShadowing.json b/tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol.0.5.16.StateShadowing.json deleted file mode 100644 index ddbd655ed..000000000 --- a/tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol.0.5.16.StateShadowing.json +++ /dev/null @@ -1,105 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "owner", - "source_mapping": { - "start": 172, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DerivedContract", - "source_mapping": { - "start": 126, - "length": 227, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "variable", - "name": "owner", - "source_mapping": { - "start": 27, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol", - "is_dependency": false, - "lines": [ - 2 - ], - "starting_column": 5, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 0, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "DerivedContract.owner (tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol#12) shadows:\n\t- BaseContract.owner (tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol#2)\n", - "markdown": "[DerivedContract.owner](tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol#L12) shadows:\n\t- [BaseContract.owner](tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol#L2)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-state/0.5.16/shadowing_state_variable.sol#L12", - "id": "9c5c3fc5091b9ecd6ec271fdbb3036d9d3426cdf9a09d6cc293fd7de9240e4ab", - "check": "shadowing-state", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-state/0.6.11/shadowing_state_variable.sol.0.6.11.StateShadowing.json b/tests/e2e/detectors/test_data/shadowing-state/0.6.11/shadowing_state_variable.sol.0.6.11.StateShadowing.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/shadowing-state/0.6.11/shadowing_state_variable.sol.0.6.11.StateShadowing.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol.0.7.5.StateShadowing.json b/tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol.0.7.5.StateShadowing.json deleted file mode 100644 index 93578d854..000000000 --- a/tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol.0.7.5.StateShadowing.json +++ /dev/null @@ -1,93 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 156, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DerivedContract", - "source_mapping": { - "start": 110, - "length": 102, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "variable", - "name": "__gap", - "source_mapping": { - "start": 51, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 5, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseContract", - "source_mapping": { - "start": 24, - "length": 84, - "filename_relative": "tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - } - ], - "description": "DerivedContract.__gap (tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol#8) shadows:\n\t- BaseContract.__gap (tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol#3)\n", - "markdown": "[DerivedContract.__gap](tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol#L8) shadows:\n\t- [BaseContract.__gap](tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/shadowing-state/0.7.5/public_gap_variable.sol#L8", - "id": "8f81b2b4b3285fe96f0b580cdd2144cc6cf6808d970ba68878b9901744069c4c", - "check": "shadowing-state", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-state/0.7.5/shadowing_state_variable.sol.0.7.5.StateShadowing.json b/tests/e2e/detectors/test_data/shadowing-state/0.7.5/shadowing_state_variable.sol.0.7.5.StateShadowing.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/shadowing-state/0.7.5/shadowing_state_variable.sol.0.7.5.StateShadowing.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/shadowing-state/0.7.6/shadowing_state_variable.sol.0.7.6.StateShadowing.json b/tests/e2e/detectors/test_data/shadowing-state/0.7.6/shadowing_state_variable.sol.0.7.6.StateShadowing.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/shadowing-state/0.7.6/shadowing_state_variable.sol.0.7.6.StateShadowing.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol.0.4.25.SimilarVarsDetection.json b/tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol.0.4.25.SimilarVarsDetection.json deleted file mode 100644 index ca8ff4d95..000000000 --- a/tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol.0.4.25.SimilarVarsDetection.json +++ /dev/null @@ -1,149 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "testVariable", - "source_mapping": { - "start": 69, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 23, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Similar", - "source_mapping": { - "start": 0, - "length": 174, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - } - } - }, - { - "type": "variable", - "name": "textVariable", - "source_mapping": { - "start": 100, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 23, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Similar", - "source_mapping": { - "start": 0, - "length": 174, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "Variable Similar.f().testVariable (tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol#3) is too similar to Similar.f().textVariable (tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol#4)\n", - "markdown": "Variable [Similar.f().testVariable](tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol#L3) is too similar to [Similar.f().textVariable](tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/similar-names/0.4.25/similar_variables.sol#L3", - "id": "2f767a2bb6f48a8435ce456e2d3ad859bdeccf66507735a14e20515e914038d5", - "check": "similar-names", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol.0.5.16.SimilarVarsDetection.json b/tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol.0.5.16.SimilarVarsDetection.json deleted file mode 100644 index 6bdc717e6..000000000 --- a/tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol.0.5.16.SimilarVarsDetection.json +++ /dev/null @@ -1,149 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "testVariable", - "source_mapping": { - "start": 69, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 23, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Similar", - "source_mapping": { - "start": 0, - "length": 174, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - } - } - }, - { - "type": "variable", - "name": "textVariable", - "source_mapping": { - "start": 100, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 23, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Similar", - "source_mapping": { - "start": 0, - "length": 174, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "Variable Similar.f().testVariable (tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol#3) is too similar to Similar.f().textVariable (tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol#4)\n", - "markdown": "Variable [Similar.f().testVariable](tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol#L3) is too similar to [Similar.f().textVariable](tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/similar-names/0.5.16/similar_variables.sol#L3", - "id": "2f767a2bb6f48a8435ce456e2d3ad859bdeccf66507735a14e20515e914038d5", - "check": "similar-names", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol.0.6.11.SimilarVarsDetection.json b/tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol.0.6.11.SimilarVarsDetection.json deleted file mode 100644 index cb4140fff..000000000 --- a/tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol.0.6.11.SimilarVarsDetection.json +++ /dev/null @@ -1,149 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "testVariable", - "source_mapping": { - "start": 69, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 23, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Similar", - "source_mapping": { - "start": 0, - "length": 174, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - } - } - }, - { - "type": "variable", - "name": "textVariable", - "source_mapping": { - "start": 100, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 23, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Similar", - "source_mapping": { - "start": 0, - "length": 174, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "Variable Similar.f().testVariable (tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol#3) is too similar to Similar.f().textVariable (tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol#4)\n", - "markdown": "Variable [Similar.f().testVariable](tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol#L3) is too similar to [Similar.f().textVariable](tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/similar-names/0.6.11/similar_variables.sol#L3", - "id": "2f767a2bb6f48a8435ce456e2d3ad859bdeccf66507735a14e20515e914038d5", - "check": "similar-names", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol.0.7.6.SimilarVarsDetection.json b/tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol.0.7.6.SimilarVarsDetection.json deleted file mode 100644 index 959b53404..000000000 --- a/tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol.0.7.6.SimilarVarsDetection.json +++ /dev/null @@ -1,149 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "testVariable", - "source_mapping": { - "start": 69, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 23, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Similar", - "source_mapping": { - "start": 0, - "length": 174, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - } - } - }, - { - "type": "variable", - "name": "textVariable", - "source_mapping": { - "start": 100, - "length": 21, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 23, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Similar", - "source_mapping": { - "start": 0, - "length": 174, - "filename_relative": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "Variable Similar.f().testVariable (tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol#3) is too similar to Similar.f().textVariable (tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol#4)\n", - "markdown": "Variable [Similar.f().testVariable](tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol#L3) is too similar to [Similar.f().textVariable](tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/similar-names/0.7.6/similar_variables.sol#L3", - "id": "2f767a2bb6f48a8435ce456e2d3ad859bdeccf66507735a14e20515e914038d5", - "check": "similar-names", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol.0.4.25.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol.0.4.25.IncorrectSolc.json deleted file mode 100644 index 20ffda221..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol.0.4.25.IncorrectSolc.json +++ /dev/null @@ -1,49 +0,0 @@ -[ - [ - { - "elements": [], - "description": "solc-0.4.25 is not recommended for deployment\n", - "markdown": "solc-0.4.25 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "4d64003d70a62b1c6963f871e841b6cbd633d07d95554e1a50e0f25d9b71ebb3", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": "0.4.25", - "source_mapping": { - "start": 0, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "0.4", - ".25" - ] - } - } - ], - "description": "Pragma version0.4.25 (tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol#1) allows old versions\n", - "markdown": "Pragma version[0.4.25](tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol#L1", - "id": "4e5f2e515609476e00f6be631f981c3589c446b78660745af9a3593ca1130fef", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol.0.5.14.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol.0.5.14.IncorrectSolc.json deleted file mode 100644 index a43f586bc..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol.0.5.14.IncorrectSolc.json +++ /dev/null @@ -1,49 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": "0.5.14", - "source_mapping": { - "start": 0, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "0.5", - ".14" - ] - } - } - ], - "description": "Pragma version0.5.14 (tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol#1) is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n", - "markdown": "Pragma version[0.5.14](tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol#L1) is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol#L1", - "id": "ba83251344888926a6441f526dc8f9e88cae6c86918e93a323d705d491f8e7a1", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "solc-0.5.14 is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)", - "markdown": "solc-0.5.14 is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)", - "first_markdown_element": "", - "id": "d29c07fc4fd9f7602b9f99b17646c6ce1a1c10740d60888a7a706f2537f6e59d", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol.0.5.16.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol.0.5.16.IncorrectSolc.json deleted file mode 100644 index 0cfee492f..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol.0.5.16.IncorrectSolc.json +++ /dev/null @@ -1,50 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": "^0.5.15", - "source_mapping": { - "start": 0, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.5", - ".15" - ] - } - } - ], - "description": "Pragma version^0.5.15 (tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol#1) allows old versions\n", - "markdown": "Pragma version[^0.5.15](tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol#L1", - "id": "91d2ad5b0149c3b4c4625cb637af4532cf9598a5a2b067ebd2c8e9b6bb5fc079", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "solc-0.5.16 is not recommended for deployment\n", - "markdown": "solc-0.5.16 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "94ddf430efb860e471a768a108c851848fa998e8a2c489c6fb23ed71d3ef4b09", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol.0.5.16.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol.0.5.16.IncorrectSolc.json deleted file mode 100644 index cb5878f1f..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol.0.5.16.IncorrectSolc.json +++ /dev/null @@ -1,53 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": ">=0.5.0<0.6.0", - "source_mapping": { - "start": 0, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 32 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.5", - ".0", - "<", - "0.6", - ".0" - ] - } - } - ], - "description": "Pragma version>=0.5.0<0.6.0 (tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol#1) allows old versions\n", - "markdown": "Pragma version[>=0.5.0<0.6.0](tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol#L1", - "id": "02a864c253786052cb7908fed97573b424063a911900f7b2a444ccf28773935a", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "solc-0.5.16 is not recommended for deployment\n", - "markdown": "solc-0.5.16 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "94ddf430efb860e471a768a108c851848fa998e8a2c489c6fb23ed71d3ef4b09", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol.0.5.16.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol.0.5.16.IncorrectSolc.json deleted file mode 100644 index 28fb98f0a..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol.0.5.16.IncorrectSolc.json +++ /dev/null @@ -1,49 +0,0 @@ -[ - [ - { - "elements": [], - "description": "solc-0.5.16 is not recommended for deployment\n", - "markdown": "solc-0.5.16 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "94ddf430efb860e471a768a108c851848fa998e8a2c489c6fb23ed71d3ef4b09", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": "0.5.16", - "source_mapping": { - "start": 0, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "0.5", - ".16" - ] - } - } - ], - "description": "Pragma version0.5.16 (tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol#1) allows old versions\n", - "markdown": "Pragma version[0.5.16](tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol#L1", - "id": "ff39ee4e334e44fff23e833d9ee84b4cfcb43bd2ac704a9d5aa1ef82a1a38d5d", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol.0.6.10.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol.0.6.10.IncorrectSolc.json deleted file mode 100644 index fc324892e..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol.0.6.10.IncorrectSolc.json +++ /dev/null @@ -1,49 +0,0 @@ -[ - [ - { - "elements": [], - "description": "solc-0.6.10 is not recommended for deployment\n", - "markdown": "solc-0.6.10 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "b2c2f26d29a163098673e6dcb2342e00d94996a84040bac62f7dbb2f20fa8f28", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": "0.6.10", - "source_mapping": { - "start": 0, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "0.6", - ".10" - ] - } - } - ], - "description": "Pragma version0.6.10 (tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol#1) allows old versions\n", - "markdown": "Pragma version[0.6.10](tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol#L1", - "id": "cd90c39225151b788bfa16a1691e7536f51464cd6e59f55694a1022e6aea7d96", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol.0.6.11.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol.0.6.11.IncorrectSolc.json deleted file mode 100644 index d8e0ab3f9..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol.0.6.11.IncorrectSolc.json +++ /dev/null @@ -1,50 +0,0 @@ -[ - [ - { - "elements": [], - "description": "solc-0.6.11 is not recommended for deployment\n", - "markdown": "solc-0.6.11 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "bafd522d637977886f038e619ad47c1987efedc6c4c24515e6e27b23585535bd", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "pragma", - "name": "^0.6.10", - "source_mapping": { - "start": 0, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 25 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.6", - ".10" - ] - } - } - ], - "description": "Pragma version^0.6.10 (tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol#1) allows old versions\n", - "markdown": "Pragma version[^0.6.10](tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol#L1", - "id": "fe9bdf90f61e61a27a7b6cff5d46a367791bb8a4e5cee82b66b2a387fcb1b07c", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol.0.6.11.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol.0.6.11.IncorrectSolc.json deleted file mode 100644 index c1f83b58e..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol.0.6.11.IncorrectSolc.json +++ /dev/null @@ -1,53 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": ">=0.6.0<0.7.0", - "source_mapping": { - "start": 0, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 32 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.7", - ".0" - ] - } - } - ], - "description": "Pragma version>=0.6.0<0.7.0 (tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol#1) allows old versions\n", - "markdown": "Pragma version[>=0.6.0<0.7.0](tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol#L1", - "id": "a25609bb9ae5982429e846e71d245a10687e54dd89db1e026ce8abc372a6b10a", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "solc-0.6.11 is not recommended for deployment\n", - "markdown": "solc-0.6.11 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "bafd522d637977886f038e619ad47c1987efedc6c4c24515e6e27b23585535bd", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol.0.6.11.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol.0.6.11.IncorrectSolc.json deleted file mode 100644 index 97f46f030..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol.0.6.11.IncorrectSolc.json +++ /dev/null @@ -1,49 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": "0.6.11", - "source_mapping": { - "start": 0, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "0.6", - ".11" - ] - } - } - ], - "description": "Pragma version0.6.11 (tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol#1) allows old versions\n", - "markdown": "Pragma version[0.6.11](tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol#L1", - "id": "1a28cd562fc4e98f8404f2c820705720133d7ad9abc8eeca6940753963e73ea8", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "solc-0.6.11 is not recommended for deployment\n", - "markdown": "solc-0.6.11 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "bafd522d637977886f038e619ad47c1987efedc6c4c24515e6e27b23585535bd", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol.0.7.4.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol.0.7.4.IncorrectSolc.json deleted file mode 100644 index a1927027b..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol.0.7.4.IncorrectSolc.json +++ /dev/null @@ -1,49 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": "0.7.4", - "source_mapping": { - "start": 0, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 23 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "0.7", - ".4" - ] - } - } - ], - "description": "Pragma version0.7.4 (tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol#1) allows old versions\n", - "markdown": "Pragma version[0.7.4](tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol#L1", - "id": "0b68e24ddb7139f74a8dd063388c1337e1372799f60bface7a5d177b8793b741", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "solc-0.7.4 is not recommended for deployment\n", - "markdown": "solc-0.7.4 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "27e54a3813c974274b355c03bd742d4f2b8cd63fa57143b4fb741cbecd022dd2", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol.0.7.6.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol.0.7.6.IncorrectSolc.json deleted file mode 100644 index 18bc52bc7..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol.0.7.6.IncorrectSolc.json +++ /dev/null @@ -1,50 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": "^0.7.4", - "source_mapping": { - "start": 0, - "length": 23, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 24 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "^", - "0.7", - ".4" - ] - } - } - ], - "description": "Pragma version^0.7.4 (tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol#1) allows old versions\n", - "markdown": "Pragma version[^0.7.4](tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol#L1", - "id": "a26793ac70a065f8101c425f5a93a44e10518267fd539c588a81aeaa273f8f4e", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "solc-0.7.6 is not recommended for deployment\n", - "markdown": "solc-0.7.6 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "ddb8ee36d9dd69b14eab702506268f8f9ef3283777d042e197277e29407b386e", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol.0.7.6.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol.0.7.6.IncorrectSolc.json deleted file mode 100644 index d20b1d58d..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol.0.7.6.IncorrectSolc.json +++ /dev/null @@ -1,53 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": ">=0.7.0<=0.7.6", - "source_mapping": { - "start": 0, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 33 - }, - "type_specific_fields": { - "directive": [ - "solidity", - ">=", - "0.7", - ".0", - "<=", - "0.7", - ".6" - ] - } - } - ], - "description": "Pragma version>=0.7.0<=0.7.6 (tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol#1) is too complex\n", - "markdown": "Pragma version[>=0.7.0<=0.7.6](tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol#L1) is too complex\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol#L1", - "id": "553e646c4f06caff84790d2bf426d1b639f5ab492f06d35c1cc1de27171a5458", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "solc-0.7.6 is not recommended for deployment\n", - "markdown": "solc-0.7.6 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "ddb8ee36d9dd69b14eab702506268f8f9ef3283777d042e197277e29407b386e", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol.0.7.6.IncorrectSolc.json b/tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol.0.7.6.IncorrectSolc.json deleted file mode 100644 index 2feda0b82..000000000 --- a/tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol.0.7.6.IncorrectSolc.json +++ /dev/null @@ -1,49 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "pragma", - "name": "0.7.6", - "source_mapping": { - "start": 0, - "length": 22, - "filename_relative": "tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol", - "is_dependency": false, - "lines": [ - 1 - ], - "starting_column": 1, - "ending_column": 23 - }, - "type_specific_fields": { - "directive": [ - "solidity", - "0.7", - ".6" - ] - } - } - ], - "description": "Pragma version0.7.6 (tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol#1) allows old versions\n", - "markdown": "Pragma version[0.7.6](tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol#L1) allows old versions\n", - "first_markdown_element": "tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol#L1", - "id": "730c7b68388c8968a0dc7398162989157d0fc6c1223b719c86abaa23aa141422", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "solc-0.7.6 is not recommended for deployment\n", - "markdown": "solc-0.7.6 is not recommended for deployment\n", - "first_markdown_element": "", - "id": "ddb8ee36d9dd69b14eab702506268f8f9ef3283777d042e197277e29407b386e", - "check": "solc-version", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/storage-array/0.5.10/storage_signed_integer_array.sol.0.5.10.StorageSignedIntegerArray.json b/tests/e2e/detectors/test_data/storage-array/0.5.10/storage_signed_integer_array.sol.0.5.10.StorageSignedIntegerArray.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/storage-array/0.5.10/storage_signed_integer_array.sol.0.5.10.StorageSignedIntegerArray.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/storage-array/0.5.16/storage_signed_integer_array.sol.0.5.16.StorageSignedIntegerArray.json b/tests/e2e/detectors/test_data/storage-array/0.5.16/storage_signed_integer_array.sol.0.5.16.StorageSignedIntegerArray.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/storage-array/0.5.16/storage_signed_integer_array.sol.0.5.16.StorageSignedIntegerArray.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol.0.4.25.Suicidal.json b/tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol.0.4.25.Suicidal.json deleted file mode 100644 index 4f1d5835f..000000000 --- a/tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol.0.4.25.Suicidal.json +++ /dev/null @@ -1,60 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "i_am_a_backdoor", - "source_mapping": { - "start": 18, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 1, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "i_am_a_backdoor()" - } - } - ], - "description": "C.i_am_a_backdoor() (tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol#4-6) allows anyone to destruct the contract\n", - "markdown": "[C.i_am_a_backdoor()](tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol#L4-L6) allows anyone to destruct the contract\n", - "first_markdown_element": "tests/e2e/detectors/test_data/suicidal/0.4.25/suicidal.sol#L4-L6", - "id": "bb1e4596537b6e2c29f4221e733692fd6dac8555095181718e440ca525016eb7", - "check": "suicidal", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol.0.5.16.Suicidal.json b/tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol.0.5.16.Suicidal.json deleted file mode 100644 index d7999c9d9..000000000 --- a/tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol.0.5.16.Suicidal.json +++ /dev/null @@ -1,60 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "i_am_a_backdoor", - "source_mapping": { - "start": 18, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 1, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "i_am_a_backdoor()" - } - } - ], - "description": "C.i_am_a_backdoor() (tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol#4-6) allows anyone to destruct the contract\n", - "markdown": "[C.i_am_a_backdoor()](tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol#L4-L6) allows anyone to destruct the contract\n", - "first_markdown_element": "tests/e2e/detectors/test_data/suicidal/0.5.16/suicidal.sol#L4-L6", - "id": "bb1e4596537b6e2c29f4221e733692fd6dac8555095181718e440ca525016eb7", - "check": "suicidal", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol.0.6.11.Suicidal.json b/tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol.0.6.11.Suicidal.json deleted file mode 100644 index bec245766..000000000 --- a/tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol.0.6.11.Suicidal.json +++ /dev/null @@ -1,60 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "i_am_a_backdoor", - "source_mapping": { - "start": 18, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 1, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "i_am_a_backdoor()" - } - } - ], - "description": "C.i_am_a_backdoor() (tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol#4-6) allows anyone to destruct the contract\n", - "markdown": "[C.i_am_a_backdoor()](tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol#L4-L6) allows anyone to destruct the contract\n", - "first_markdown_element": "tests/e2e/detectors/test_data/suicidal/0.6.11/suicidal.sol#L4-L6", - "id": "bb1e4596537b6e2c29f4221e733692fd6dac8555095181718e440ca525016eb7", - "check": "suicidal", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol.0.7.6.Suicidal.json b/tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol.0.7.6.Suicidal.json deleted file mode 100644 index 01b0dde93..000000000 --- a/tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol.0.7.6.Suicidal.json +++ /dev/null @@ -1,60 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "i_am_a_backdoor", - "source_mapping": { - "start": 18, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 1, - "length": 94, - "filename_relative": "tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "i_am_a_backdoor()" - } - } - ], - "description": "C.i_am_a_backdoor() (tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol#4-6) allows anyone to destruct the contract\n", - "markdown": "[C.i_am_a_backdoor()](tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol#L4-L6) allows anyone to destruct the contract\n", - "first_markdown_element": "tests/e2e/detectors/test_data/suicidal/0.7.6/suicidal.sol#L4-L6", - "id": "bb1e4596537b6e2c29f4221e733692fd6dac8555095181718e440ca525016eb7", - "check": "suicidal", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol.0.4.25.TypeBasedTautology.json b/tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol.0.4.25.TypeBasedTautology.json deleted file mode 100644 index c40705123..000000000 --- a/tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol.0.4.25.TypeBasedTautology.json +++ /dev/null @@ -1,274 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 150, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "g(uint8)" - } - }, - { - "type": "node", - "name": "(y < 512)", - "source_mapping": { - "start": 202, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 150, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "g(uint8)" - } - } - } - } - ], - "description": "A.g(uint8) (tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#9-11) contains a tautology or contradiction:\n\t- (y < 512) (tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#10)\n", - "markdown": "[A.g(uint8)](tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#L9-L11) contains a tautology or contradiction:\n\t- [(y < 512)](tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#L9-L11", - "id": "2d5afaf7ffe75ae8bd3fe6831af4fdbc60c3151ccaedbf03a96dc28463ab87f7", - "check": "tautology", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - }, - { - "type": "node", - "name": "x >= 0", - "source_mapping": { - "start": 69, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 13, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - } - ], - "description": "A.f(uint256) (tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#2-7) contains a tautology or contradiction:\n\t- x >= 0 (tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#3)\n", - "markdown": "[A.f(uint256)](tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#L2-L7) contains a tautology or contradiction:\n\t- [x >= 0](tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tautology/0.4.25/type_based_tautology.sol#L2-L7", - "id": "8e35298d2cfa14f0683bc976a299c6c757f7b036a96443fa8ddae8ff8edab0a6", - "check": "tautology", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol.0.5.16.TypeBasedTautology.json b/tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol.0.5.16.TypeBasedTautology.json deleted file mode 100644 index ae70b276a..000000000 --- a/tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol.0.5.16.TypeBasedTautology.json +++ /dev/null @@ -1,274 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 150, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "g(uint8)" - } - }, - { - "type": "node", - "name": "(y < 512)", - "source_mapping": { - "start": 202, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 150, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "g(uint8)" - } - } - } - } - ], - "description": "A.g(uint8) (tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#9-11) contains a tautology or contradiction:\n\t- (y < 512) (tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#10)\n", - "markdown": "[A.g(uint8)](tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#L9-L11) contains a tautology or contradiction:\n\t- [(y < 512)](tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#L9-L11", - "id": "4104ae382ec7ca18aa48706d1336f1cf8a1420e3bbca67931fca5a534f59eaca", - "check": "tautology", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - }, - { - "type": "node", - "name": "x >= 0", - "source_mapping": { - "start": 69, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 13, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - } - ], - "description": "A.f(uint256) (tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#2-7) contains a tautology or contradiction:\n\t- x >= 0 (tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#3)\n", - "markdown": "[A.f(uint256)](tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#L2-L7) contains a tautology or contradiction:\n\t- [x >= 0](tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tautology/0.5.16/type_based_tautology.sol#L2-L7", - "id": "5b31f4bb71fc1840be393b354338ffba3380a788f823be9f3bfb017ab2876051", - "check": "tautology", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol.0.6.11.TypeBasedTautology.json b/tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol.0.6.11.TypeBasedTautology.json deleted file mode 100644 index b3484d6ac..000000000 --- a/tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol.0.6.11.TypeBasedTautology.json +++ /dev/null @@ -1,274 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 150, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "g(uint8)" - } - }, - { - "type": "node", - "name": "(y < 512)", - "source_mapping": { - "start": 202, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 150, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "g(uint8)" - } - } - } - } - ], - "description": "A.g(uint8) (tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#9-11) contains a tautology or contradiction:\n\t- (y < 512) (tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#10)\n", - "markdown": "[A.g(uint8)](tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#L9-L11) contains a tautology or contradiction:\n\t- [(y < 512)](tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#L9-L11", - "id": "847fae465158df30ff5281b9fb6c4fe56bc62126a24263e5b73cfe189ea88101", - "check": "tautology", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - }, - { - "type": "node", - "name": "x >= 0", - "source_mapping": { - "start": 69, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 13, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - } - ], - "description": "A.f(uint256) (tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#2-7) contains a tautology or contradiction:\n\t- x >= 0 (tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#3)\n", - "markdown": "[A.f(uint256)](tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#L2-L7) contains a tautology or contradiction:\n\t- [x >= 0](tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tautology/0.6.11/type_based_tautology.sol#L2-L7", - "id": "eadd3a6e49d82eee622768c1de7238bc9a7dab02bfa86a7622fc0499f0398a84", - "check": "tautology", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol.0.7.6.TypeBasedTautology.json b/tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol.0.7.6.TypeBasedTautology.json deleted file mode 100644 index 54356483e..000000000 --- a/tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol.0.7.6.TypeBasedTautology.json +++ /dev/null @@ -1,274 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "g", - "source_mapping": { - "start": 150, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "g(uint8)" - } - }, - { - "type": "node", - "name": "(y < 512)", - "source_mapping": { - "start": 202, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "g", - "source_mapping": { - "start": 150, - "length": 80, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "g(uint8)" - } - } - } - } - ], - "description": "A.g(uint8) (tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#9-11) contains a tautology or contradiction:\n\t- (y < 512) (tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#10)\n", - "markdown": "[A.g(uint8)](tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#L9-L11) contains a tautology or contradiction:\n\t- [(y < 512)](tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#L9-L11", - "id": "8775db38ad7ea2dae79cc8a2998e6babf60b8d925894c198fde99ce0d56f8dd8", - "check": "tautology", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - }, - { - "type": "node", - "name": "x >= 0", - "source_mapping": { - "start": 69, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 13, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 14, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 2, - "ending_column": 3 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 0, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - } - ], - "description": "A.f(uint256) (tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#2-7) contains a tautology or contradiction:\n\t- x >= 0 (tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#3)\n", - "markdown": "[A.f(uint256)](tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#L2-L7) contains a tautology or contradiction:\n\t- [x >= 0](tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tautology/0.7.6/type_based_tautology.sol#L2-L7", - "id": "bdb95728224ebe35a966e39c2ad0f8e705087e7577bc7bfb30b383652171813e", - "check": "tautology", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol.0.4.25.Timestamp.json b/tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol.0.4.25.Timestamp.json deleted file mode 100644 index 2bac9145f..000000000 --- a/tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol.0.4.25.Timestamp.json +++ /dev/null @@ -1,444 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 47, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(block.timestamp == 0)", - "source_mapping": { - "start": 81, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 47, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "Timestamp.bad0() (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#4-6) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(block.timestamp == 0) (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#5)\n", - "markdown": "[Timestamp.bad0()](tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#L4-L6) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool)(block.timestamp == 0)](tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#L5)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#L4-L6", - "id": "03594e6df776c41fb3de4b4b7858ab3dd2b36ed0b2bd9dccb5a343732d26e7f4", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 126, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(time == 0)", - "source_mapping": { - "start": 197, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 126, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "Timestamp.bad1() (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#8-11) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(time == 0) (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#10)\n", - "markdown": "[Timestamp.bad1()](tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#L8-L11) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool)(time == 0)](tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#L8-L11", - "id": "e2b861584cc340e917c6ac6a1191895909bd447d58b3b73907bfc766af3a69e8", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 231, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "block.timestamp > 0", - "source_mapping": { - "start": 279, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 231, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "Timestamp.bad2() (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#13-15) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > 0 (tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#14)\n", - "markdown": "[Timestamp.bad2()](tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#L13-L15) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > 0](tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.4.25/timestamp.sol#L13-L15", - "id": "f66328b4b47ebaaf78184cdcfa95e1fe0fd9a1ed3de1c93968f4b6325c174f4b", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol.0.5.16.Timestamp.json b/tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol.0.5.16.Timestamp.json deleted file mode 100644 index 18f29cbee..000000000 --- a/tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol.0.5.16.Timestamp.json +++ /dev/null @@ -1,444 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 126, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(time == 0)", - "source_mapping": { - "start": 197, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 126, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "Timestamp.bad1() (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#8-11) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(time == 0) (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#10)\n", - "markdown": "[Timestamp.bad1()](tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#L8-L11) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool)(time == 0)](tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#L8-L11", - "id": "49a0bfcb661a31edaa9b37280b8000653c712209b40cd415e386536633730b7f", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 47, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(block.timestamp == 0)", - "source_mapping": { - "start": 81, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 47, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "Timestamp.bad0() (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#4-6) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(block.timestamp == 0) (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#5)\n", - "markdown": "[Timestamp.bad0()](tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#L4-L6) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool)(block.timestamp == 0)](tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#L5)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#L4-L6", - "id": "4df4c103af282998c5004ea73cf301de8b030dce3eae9174fabc560da2c8dfcc", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 231, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "block.timestamp > 0", - "source_mapping": { - "start": 279, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 231, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "Timestamp.bad2() (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#13-15) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > 0 (tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#14)\n", - "markdown": "[Timestamp.bad2()](tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#L13-L15) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > 0](tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.5.16/timestamp.sol#L13-L15", - "id": "8783893a5aa7a9e13ef0b39ba3f525610aea6b2ae8b5f994552a87c0dc4c8263", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol.0.6.11.Timestamp.json b/tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol.0.6.11.Timestamp.json deleted file mode 100644 index 09671e31b..000000000 --- a/tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol.0.6.11.Timestamp.json +++ /dev/null @@ -1,444 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 47, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(block.timestamp == 0)", - "source_mapping": { - "start": 81, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 47, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "Timestamp.bad0() (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#4-6) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(block.timestamp == 0) (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#5)\n", - "markdown": "[Timestamp.bad0()](tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#L4-L6) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool)(block.timestamp == 0)](tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#L5)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#L4-L6", - "id": "23a1b86e2f94f257d4234ff06cc78c782f0dc8c2628452a58625edb30d620c0d", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 126, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(time == 0)", - "source_mapping": { - "start": 197, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 126, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "Timestamp.bad1() (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#8-11) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(time == 0) (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#10)\n", - "markdown": "[Timestamp.bad1()](tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#L8-L11) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool)(time == 0)](tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#L8-L11", - "id": "31b6ab92cef91ce4098c8adbffe3e22bc84eb6e3f30fb85e63cd33eadd08e496", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 231, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "block.timestamp > 0", - "source_mapping": { - "start": 279, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 231, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "Timestamp.bad2() (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#13-15) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > 0 (tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#14)\n", - "markdown": "[Timestamp.bad2()](tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#L13-L15) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > 0](tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.6.11/timestamp.sol#L13-L15", - "id": "bb9f5bde3d69a13c45f96610397f1c0a5a3a56b796ae577fbfc3d0dfc2c3d862", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol.0.7.6.Timestamp.json b/tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol.0.7.6.Timestamp.json deleted file mode 100644 index 5606861c1..000000000 --- a/tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol.0.7.6.Timestamp.json +++ /dev/null @@ -1,444 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 231, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "block.timestamp > 0", - "source_mapping": { - "start": 279, - "length": 24, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 231, - "length": 79, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "Timestamp.bad2() (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#13-15) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > 0 (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#14)\n", - "markdown": "[Timestamp.bad2()](tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#L13-L15) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > 0](tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#L13-L15", - "id": "7eb1c390d5c07173eb75465abb24e6996b100848e292c0462a666ca614907770", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 47, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "require(bool)(block.timestamp == 0)", - "source_mapping": { - "start": 81, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 47, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "Timestamp.bad0() (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#4-6) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(block.timestamp == 0) (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#5)\n", - "markdown": "[Timestamp.bad0()](tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#L4-L6) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool)(block.timestamp == 0)](tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#L5)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#L4-L6", - "id": "7efbdd62dbabbb488457b4ec4e4aef7f07852c5d817f9957a1b70455af297d0d", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 126, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "require(bool)(time == 0)", - "source_mapping": { - "start": 197, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 126, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Timestamp", - "source_mapping": { - "start": 0, - "length": 402, - "filename_relative": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "Timestamp.bad1() (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#8-11) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(time == 0) (tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#10)\n", - "markdown": "[Timestamp.bad1()](tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#L8-L11) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool)(time == 0)](tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/timestamp/0.7.6/timestamp.sol#L8-L11", - "id": "d5e863862b123d4e87ea1d43501d463ef36caa3c90c5d42e4df981c3e62f5661", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol.0.4.25.TooManyDigits.json b/tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol.0.4.25.TooManyDigits.json deleted file mode 100644 index 47eb60ef0..000000000 --- a/tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol.0.4.25.TooManyDigits.json +++ /dev/null @@ -1,980 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "h", - "source_mapping": { - "start": 456, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "h()" - } - }, - { - "type": "node", - "name": "x2 = 100000", - "source_mapping": { - "start": 512, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "h", - "source_mapping": { - "start": 456, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "h()" - } - } - } - } - ], - "description": "C.h() (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#20-24) uses literals with too many digits:\n\t- x2 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#22)\n", - "markdown": "[C.h()](tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L20-L24) uses literals with too many digits:\n\t- [x2 = 100000](tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L20-L24", - "id": "053e072eea67b5308f8292cf1830c330fbc80a99a5a45343e29150fe26d51928", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x4 = 100000", - "source_mapping": { - "start": 311, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x4 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#13)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x4 = 100000](tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L13)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L9-L15", - "id": "579e9c63d2b881823eca4226876a901fc6c9de7a96a54e1615165f944f4ec993", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x1 = 0x000001", - "source_mapping": { - "start": 209, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x1 = 0x000001 (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#10)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x1 = 0x000001](tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L9-L15", - "id": "8333f893ea49b4205a270184968190c9eb89af862b58bb167b33ca792a74a68c", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x3 = 1000000000000000000", - "source_mapping": { - "start": 272, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x3 = 1000000000000000000 (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#12)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x3 = 1000000000000000000](tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L9-L15", - "id": "e954700672dbefd40444a24fc867f6989e2d37011867a6cd4c2f651e249292a7", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x2 = 0x0000000000001", - "source_mapping": { - "start": 237, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x2 = 0x0000000000001 (tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#11)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x2 = 0x0000000000001](tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.4.25/too_many_digits.sol#L9-L15", - "id": "ec348978a30da0283b0660abafc5a51687f5a12774a950944c56cebaf9de63c8", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol.0.5.16.TooManyDigits.json b/tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol.0.5.16.TooManyDigits.json deleted file mode 100644 index a90452e7b..000000000 --- a/tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol.0.5.16.TooManyDigits.json +++ /dev/null @@ -1,980 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x2 = 0x0000000000001", - "source_mapping": { - "start": 237, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x2 = 0x0000000000001 (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#11)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x2 = 0x0000000000001](tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L9-L15", - "id": "4330493d2b1ee0d0cbefafa7f9b0d7f58e9aec83268f33dd85bf2c0046add1fc", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "h", - "source_mapping": { - "start": 456, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "h()" - } - }, - { - "type": "node", - "name": "x2 = 100000", - "source_mapping": { - "start": 512, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "h", - "source_mapping": { - "start": 456, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "h()" - } - } - } - } - ], - "description": "C.h() (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#20-24) uses literals with too many digits:\n\t- x2 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#22)\n", - "markdown": "[C.h()](tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L20-L24) uses literals with too many digits:\n\t- [x2 = 100000](tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L20-L24", - "id": "590bcf5dc5ea643fac6c0b3e1e819626e2f44d18caa50845adf179044616072a", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x3 = 1000000000000000000", - "source_mapping": { - "start": 272, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x3 = 1000000000000000000 (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#12)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x3 = 1000000000000000000](tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L9-L15", - "id": "69afedac402e965c98ab17a5927f0ce44f3497e4d4f9f6c1db6b21c6e9c1763b", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x1 = 0x000001", - "source_mapping": { - "start": 209, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x1 = 0x000001 (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#10)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x1 = 0x000001](tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L9-L15", - "id": "6f2cd82484200efd6897d01be4e6b4b24437d10a2de204a5efd9fea2b1661015", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x4 = 100000", - "source_mapping": { - "start": 311, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 999, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x4 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#13)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x4 = 100000](tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L13)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.5.16/too_many_digits.sol#L9-L15", - "id": "9c2d8aa12c825077848edceeb4f633f4afa334accd986efa4f6062ca9667ebcf", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol.0.6.11.TooManyDigits.json b/tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol.0.6.11.TooManyDigits.json deleted file mode 100644 index 6ad103d2b..000000000 --- a/tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol.0.6.11.TooManyDigits.json +++ /dev/null @@ -1,990 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 1000, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x3 = 1000000000000000000", - "source_mapping": { - "start": 272, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 1000, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x3 = 1000000000000000000 (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#12)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x3 = 1000000000000000000](tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L9-L15", - "id": "04b17f2c4d0e28c1d74160bbb3770c986a068a50438a21e521b518867ea7ffb4", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 1000, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x2 = 0x0000000000001", - "source_mapping": { - "start": 237, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 1000, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x2 = 0x0000000000001 (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#11)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x2 = 0x0000000000001](tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L9-L15", - "id": "79422ffc3e0bbce7e320954d1a85e216449766995702cef5d594d82c41bf40db", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 1000, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x4 = 100000", - "source_mapping": { - "start": 311, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 1000, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x4 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#13)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x4 = 100000](tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L13)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L9-L15", - "id": "7e5f8ae263ae46f7ab365199289b9737a23dee61f856679dd3ceaa3b3d68ce58", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "h", - "source_mapping": { - "start": 456, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 1000, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "h()" - } - }, - { - "type": "node", - "name": "x2 = 100000", - "source_mapping": { - "start": 512, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "h", - "source_mapping": { - "start": 456, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 1000, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "h()" - } - } - } - } - ], - "description": "C.h() (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#20-24) uses literals with too many digits:\n\t- x2 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#22)\n", - "markdown": "[C.h()](tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L20-L24) uses literals with too many digits:\n\t- [x2 = 100000](tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L20-L24", - "id": "8cecf4ad1009d6c1188cd11ee23c8f7870756189e7d8344657fa9979c2ae6fca", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 1000, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x1 = 0x000001", - "source_mapping": { - "start": 209, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 177, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 28, - "length": 1000, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x1 = 0x000001 (tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#10)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x1 = 0x000001](tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.6.11/too_many_digits.sol#L9-L15", - "id": "f52a8172f386c68b1e935f3e2acf75b851a17cca0881dbbd915a3c810337b676", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol.0.7.6.TooManyDigits.json b/tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol.0.7.6.TooManyDigits.json deleted file mode 100644 index 84ebdae37..000000000 --- a/tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol.0.7.6.TooManyDigits.json +++ /dev/null @@ -1,970 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 151, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 2, - "length": 917, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x3 = 1000000000000000000", - "source_mapping": { - "start": 246, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 151, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 2, - "length": 917, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x3 = 1000000000000000000 (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#12)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x3 = 1000000000000000000](tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L12)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L9-L15", - "id": "0d18bde863ef2b94fe2573c8e094e8c71ce0530994ab7e1e1120c362f50680ff", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 151, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 2, - "length": 917, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x2 = 0x0000000000001", - "source_mapping": { - "start": 211, - "length": 25, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 151, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 2, - "length": 917, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x2 = 0x0000000000001 (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#11)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x2 = 0x0000000000001](tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L9-L15", - "id": "145cf1a01ee8d6803da8098287a473a5639a6ed377b4185044b448af47a7785d", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 151, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 2, - "length": 917, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x1 = 0x000001", - "source_mapping": { - "start": 183, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 151, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 2, - "length": 917, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x1 = 0x000001 (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#10)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x1 = 0x000001](tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L9-L15", - "id": "50fa9983fd37fc3ef4d4fc3def220cbabf3e1e87482c6974e7b574689dc9431f", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "h", - "source_mapping": { - "start": 430, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 2, - "length": 917, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "h()" - } - }, - { - "type": "node", - "name": "x2 = 100000", - "source_mapping": { - "start": 486, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "h", - "source_mapping": { - "start": 430, - "length": 113, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 2, - "length": 917, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "h()" - } - } - } - } - ], - "description": "C.h() (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#20-24) uses literals with too many digits:\n\t- x2 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#22)\n", - "markdown": "[C.h()](tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L20-L24) uses literals with too many digits:\n\t- [x2 = 100000](tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L20-L24", - "id": "bb3db442853479007fff235805e7bcf030d1cf8c1bbad6fd112b9c996ba61c4a", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 151, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 2, - "length": 917, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - }, - { - "type": "node", - "name": "x4 = 100000", - "source_mapping": { - "start": 285, - "length": 16, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 151, - "length": 195, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 2, - "length": 917, - "filename_relative": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f()" - } - } - } - } - ], - "description": "C.f() (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x4 = 100000 (tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#13)\n", - "markdown": "[C.f()](tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L9-L15) uses literals with too many digits:\n\t- [x4 = 100000](tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L13)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/too-many-digits/0.7.6/too_many_digits.sol#L9-L15", - "id": "fbf4039e77bad288247e091fc3e7184fdc787f06bc45085f7d79c7cf8c3a0f66", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol.0.4.25.TxOrigin.json b/tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol.0.4.25.TxOrigin.json deleted file mode 100644 index 02b43f0d1..000000000 --- a/tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol.0.4.25.TxOrigin.json +++ /dev/null @@ -1,316 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bug0", - "source_mapping": { - "start": 116, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug0()" - } - }, - { - "type": "node", - "name": "require(bool)(tx.origin == owner)", - "source_mapping": { - "start": 142, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug0", - "source_mapping": { - "start": 116, - "length": 60, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug0()" - } - } - } - } - ], - "description": "TxOrigin.bug0() (tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#9-11) uses tx.origin for authorization: require(bool)(tx.origin == owner) (tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#10)\n", - "markdown": "[TxOrigin.bug0()](tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#L9-L11) uses tx.origin for authorization: [require(bool)(tx.origin == owner)](tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#L9-L11", - "id": "763fe3d84027e0b56f7797a2913da141bb2a3a61872e3faaffd5637a7c215966", - "check": "tx-origin", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bug2", - "source_mapping": { - "start": 182, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug2()" - } - }, - { - "type": "node", - "name": "tx.origin != owner", - "source_mapping": { - "start": 212, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 13, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug2", - "source_mapping": { - "start": 182, - "length": 89, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 393, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug2()" - } - } - } - } - ], - "description": "TxOrigin.bug2() (tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#13-17) uses tx.origin for authorization: tx.origin != owner (tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#14)\n", - "markdown": "[TxOrigin.bug2()](tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#L13-L17) uses tx.origin for authorization: [tx.origin != owner](tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tx-origin/0.4.25/tx_origin.sol#L13-L17", - "id": "9cd6cc5fbb38a4aa51b6fe687ffc959d61e571c43f7ddb2c2a9d628b06a472a3", - "check": "tx-origin", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol.0.5.16.TxOrigin.json b/tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol.0.5.16.TxOrigin.json deleted file mode 100644 index 77cd977b2..000000000 --- a/tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol.0.5.16.TxOrigin.json +++ /dev/null @@ -1,316 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bug0", - "source_mapping": { - "start": 127, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 25, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug0()" - } - }, - { - "type": "node", - "name": "require(bool)(tx.origin == owner)", - "source_mapping": { - "start": 159, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug0", - "source_mapping": { - "start": 127, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 25, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug0()" - } - } - } - } - ], - "description": "TxOrigin.bug0() (tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#9-11) uses tx.origin for authorization: require(bool)(tx.origin == owner) (tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#10)\n", - "markdown": "[TxOrigin.bug0()](tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#L9-L11) uses tx.origin for authorization: [require(bool)(tx.origin == owner)](tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#L9-L11", - "id": "964dc0a5332a1829793bae146cb8c612b19d9f4c7ffabdec535865be0267e453", - "check": "tx-origin", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bug2", - "source_mapping": { - "start": 199, - "length": 95, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 25, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug2()" - } - }, - { - "type": "node", - "name": "tx.origin != owner", - "source_mapping": { - "start": 235, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 13, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug2", - "source_mapping": { - "start": 199, - "length": 95, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 25, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug2()" - } - } - } - } - ], - "description": "TxOrigin.bug2() (tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#13-17) uses tx.origin for authorization: tx.origin != owner (tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#14)\n", - "markdown": "[TxOrigin.bug2()](tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#L13-L17) uses tx.origin for authorization: [tx.origin != owner](tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tx-origin/0.5.16/tx_origin.sol#L13-L17", - "id": "c59530b3606736ac49042a2b48fef6644036400f64f91c8d004d0d5bf7031826", - "check": "tx-origin", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol.0.6.11.TxOrigin.json b/tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol.0.6.11.TxOrigin.json deleted file mode 100644 index fbc904ae3..000000000 --- a/tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol.0.6.11.TxOrigin.json +++ /dev/null @@ -1,316 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bug0", - "source_mapping": { - "start": 130, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug0()" - } - }, - { - "type": "node", - "name": "require(bool)(tx.origin == owner)", - "source_mapping": { - "start": 162, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug0", - "source_mapping": { - "start": 130, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug0()" - } - } - } - } - ], - "description": "TxOrigin.bug0() (tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#9-11) uses tx.origin for authorization: require(bool)(tx.origin == owner) (tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#10)\n", - "markdown": "[TxOrigin.bug0()](tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#L9-L11) uses tx.origin for authorization: [require(bool)(tx.origin == owner)](tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#L9-L11", - "id": "e916fd4b9d754f327bef52f0e01c6184164c070b135260e1ffd7e4297a465e11", - "check": "tx-origin", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bug2", - "source_mapping": { - "start": 202, - "length": 95, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug2()" - } - }, - { - "type": "node", - "name": "tx.origin != owner", - "source_mapping": { - "start": 238, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 13, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug2", - "source_mapping": { - "start": 202, - "length": 95, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug2()" - } - } - } - } - ], - "description": "TxOrigin.bug2() (tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#13-17) uses tx.origin for authorization: tx.origin != owner (tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#14)\n", - "markdown": "[TxOrigin.bug2()](tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#L13-L17) uses tx.origin for authorization: [tx.origin != owner](tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tx-origin/0.6.11/tx_origin.sol#L13-L17", - "id": "fb2810a8b293123b87a1cc869b0a5123a6c43c9eaf5e05635f2f4c8d11dcce01", - "check": "tx-origin", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol.0.7.6.TxOrigin.json b/tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol.0.7.6.TxOrigin.json deleted file mode 100644 index d0e7139c7..000000000 --- a/tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol.0.7.6.TxOrigin.json +++ /dev/null @@ -1,316 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bug2", - "source_mapping": { - "start": 202, - "length": 95, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug2()" - } - }, - { - "type": "node", - "name": "tx.origin != owner", - "source_mapping": { - "start": 238, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 13, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug2", - "source_mapping": { - "start": 202, - "length": 95, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug2()" - } - } - } - } - ], - "description": "TxOrigin.bug2() (tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#13-17) uses tx.origin for authorization: tx.origin != owner (tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#14)\n", - "markdown": "[TxOrigin.bug2()](tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#L13-L17) uses tx.origin for authorization: [tx.origin != owner](tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#L13-L17", - "id": "be02a2e929852a463b8ea0b02d6ac0aa7a977589b305078a506503bae3e539ae", - "check": "tx-origin", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bug0", - "source_mapping": { - "start": 130, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug0()" - } - }, - { - "type": "node", - "name": "require(bool)(tx.origin == owner)", - "source_mapping": { - "start": 162, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bug0", - "source_mapping": { - "start": 130, - "length": 66, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TxOrigin", - "source_mapping": { - "start": 28, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bug0()" - } - } - } - } - ], - "description": "TxOrigin.bug0() (tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#9-11) uses tx.origin for authorization: require(bool)(tx.origin == owner) (tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#10)\n", - "markdown": "[TxOrigin.bug0()](tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#L9-L11) uses tx.origin for authorization: [require(bool)(tx.origin == owner)](tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/tx-origin/0.7.6/tx_origin.sol#L9-L11", - "id": "d7499b349f6bf0f616986a3a459ecb90cd625e5bf3601d1e2b864bad16a11ec4", - "check": "tx-origin", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol.0.4.25.UncheckedLowLevel.json b/tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol.0.4.25.UncheckedLowLevel.json deleted file mode 100644 index 6e32d2a64..000000000 --- a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol.0.4.25.UncheckedLowLevel.json +++ /dev/null @@ -1,130 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 214, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - }, - { - "type": "node", - "name": "dst.call.value(msg.value)()", - "source_mapping": { - "start": 73, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 88, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 214, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - } - } - } - ], - "description": "MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol#2-4) ignores return value by dst.call.value(msg.value)() (tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol#3)\n", - "markdown": "[MyConc.bad(address)](tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol#L2-L4) ignores return value by [dst.call.value(msg.value)()](tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.4.25/unchecked_lowlevel.sol#L2-L4", - "id": "a53ebce132787a825156e74d4580a7948908502dfa293ced870c2f8cce988567", - "check": "unchecked-lowlevel", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol.0.5.16.UncheckedLowLevel.json b/tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol.0.5.16.UncheckedLowLevel.json deleted file mode 100644 index 8cbe3b1bc..000000000 --- a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol.0.5.16.UncheckedLowLevel.json +++ /dev/null @@ -1,132 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 274, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - }, - { - "type": "node", - "name": "dst.call.value(msg.value)()", - "source_mapping": { - "start": 81, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 274, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - } - } - } - ], - "description": "MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol#2-4) ignores return value by dst.call.value(msg.value)() (tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol#3)\n", - "markdown": "[MyConc.bad(address)](tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol#L2-L4) ignores return value by [dst.call.value(msg.value)()](tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.5.16/unchecked_lowlevel.sol#L2-L4", - "id": "681bc51b34d1673cfd5e09101557ba555577312655bcd976ec05109be46c9ed1", - "check": "unchecked-lowlevel", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol.0.6.11.UncheckedLowLevel.json b/tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol.0.6.11.UncheckedLowLevel.json deleted file mode 100644 index 5c462303c..000000000 --- a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol.0.6.11.UncheckedLowLevel.json +++ /dev/null @@ -1,132 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 274, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - }, - { - "type": "node", - "name": "dst.call.value(msg.value)()", - "source_mapping": { - "start": 81, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 274, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - } - } - } - ], - "description": "MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol#2-4) ignores return value by dst.call.value(msg.value)() (tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol#3)\n", - "markdown": "[MyConc.bad(address)](tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol#L2-L4) ignores return value by [dst.call.value(msg.value)()](tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.6.11/unchecked_lowlevel.sol#L2-L4", - "id": "944a7149ed3900aa7e22a86921df5db6e9952b9bb63ebd1a53967bfbd79ec888", - "check": "unchecked-lowlevel", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol.0.7.6.UncheckedLowLevel.json b/tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol.0.7.6.UncheckedLowLevel.json deleted file mode 100644 index 4fb9e18e7..000000000 --- a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol.0.7.6.UncheckedLowLevel.json +++ /dev/null @@ -1,132 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 274, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - }, - { - "type": "node", - "name": "dst.call{value: msg.value}()", - "source_mapping": { - "start": 81, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 96, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 274, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - } - } - } - ], - "description": "MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol#2-4) ignores return value by dst.call{value: msg.value}() (tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol#3)\n", - "markdown": "[MyConc.bad(address)](tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol#L2-L4) ignores return value by [dst.call{value: msg.value}()](tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol#L2-L4", - "id": "3d788c931cdecb4919bf36187d46e5f66c541055763747d6822741a05b12eb98", - "check": "unchecked-lowlevel", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol.0.4.25.UncheckedSend.json b/tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol.0.4.25.UncheckedSend.json deleted file mode 100644 index 039c36d9e..000000000 --- a/tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol.0.4.25.UncheckedSend.json +++ /dev/null @@ -1,146 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 395, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - }, - { - "type": "node", - "name": "dst.send(msg.value)", - "source_mapping": { - "start": 73, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 395, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - } - } - } - ], - "description": "MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol#2-4) ignores return value by dst.send(msg.value) (tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol#3)\n", - "markdown": "[MyConc.bad(address)](tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol#L2-L4) ignores return value by [dst.send(msg.value)](tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unchecked-send/0.4.25/unchecked_send.sol#L2-L4", - "id": "53c669b7a1a11ee69bc94ea346368fc8f198ab118986b147f83135047186b948", - "check": "unchecked-send", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol.0.5.16.UncheckedSend.json b/tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol.0.5.16.UncheckedSend.json deleted file mode 100644 index fd3a9775e..000000000 --- a/tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol.0.5.16.UncheckedSend.json +++ /dev/null @@ -1,146 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 419, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - }, - { - "type": "node", - "name": "dst.send(msg.value)", - "source_mapping": { - "start": 81, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 419, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - } - } - } - ], - "description": "MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol#2-4) ignores return value by dst.send(msg.value) (tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol#3)\n", - "markdown": "[MyConc.bad(address)](tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol#L2-L4) ignores return value by [dst.send(msg.value)](tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unchecked-send/0.5.16/unchecked_send.sol#L2-L4", - "id": "07b3682c6cfb1a5f141bff2d66a2bab2bbef9dd783d4061716ca6f23283d649f", - "check": "unchecked-send", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol.0.6.11.UncheckedSend.json b/tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol.0.6.11.UncheckedSend.json deleted file mode 100644 index f74efaa70..000000000 --- a/tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol.0.6.11.UncheckedSend.json +++ /dev/null @@ -1,146 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 419, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - }, - { - "type": "node", - "name": "dst.send(msg.value)", - "source_mapping": { - "start": 81, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 419, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - } - } - } - ], - "description": "MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol#2-4) ignores return value by dst.send(msg.value) (tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol#3)\n", - "markdown": "[MyConc.bad(address)](tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol#L2-L4) ignores return value by [dst.send(msg.value)](tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unchecked-send/0.6.11/unchecked_send.sol#L2-L4", - "id": "5a8a36e26f96ad9c6c96c2fe504e0199561af6e9e25b901ca899655349f7f64d", - "check": "unchecked-send", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol.0.7.6.UncheckedSend.json b/tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol.0.7.6.UncheckedSend.json deleted file mode 100644 index 3984b49e9..000000000 --- a/tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol.0.7.6.UncheckedSend.json +++ /dev/null @@ -1,146 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 419, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - }, - { - "type": "node", - "name": "dst.send(msg.value)", - "source_mapping": { - "start": 81, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 21, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MyConc", - "source_mapping": { - "start": 0, - "length": 419, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad(address)" - } - } - } - } - ], - "description": "MyConc.bad(address) (tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol#2-4) ignores return value by dst.send(msg.value) (tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol#3)\n", - "markdown": "[MyConc.bad(address)](tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol#L2-L4) ignores return value by [dst.send(msg.value)](tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol#L3)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unchecked-send/0.7.6/unchecked_send.sol#L2-L4", - "id": "9b37538e9923917709a86b5e590c69d39664c6ed979db9c15767acc11317872e", - "check": "unchecked-send", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol.0.7.6.UncheckedTransfer.json b/tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol.0.7.6.UncheckedTransfer.json deleted file mode 100644 index 7e14b9765..000000000 --- a/tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol.0.7.6.UncheckedTransfer.json +++ /dev/null @@ -1,428 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 461, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 330, - "length": 1456, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "t.transfer(address(0),1000000000000000000)", - "source_mapping": { - "start": 493, - "length": 31, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 461, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 330, - "length": 1456, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "C.bad0() (tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#20-22) ignores return value by t.transfer(address(0),1000000000000000000) (tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#21)\n", - "markdown": "[C.bad0()](tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#L20-L22) ignores return value by [t.transfer(address(0),1000000000000000000)](tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#L21)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#L20-L22", - "id": "e7965c2319b8ce1f10fb8b4c90af763c5bc9e6c74a6706b810de2ee871ed779e", - "check": "unchecked-transfer", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 1043, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "is_dependency": false, - "lines": [ - 40, - 41, - 42 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 330, - "length": 1456, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "t.transferFrom(address(this),address(0),1000000000000000000)", - "source_mapping": { - "start": 1076, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "is_dependency": false, - "lines": [ - 41 - ], - "starting_column": 9, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 1043, - "length": 90, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "is_dependency": false, - "lines": [ - 40, - 41, - 42 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 330, - "length": 1456, - "filename_relative": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "C.bad1() (tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#40-42) ignores return value by t.transferFrom(address(this),address(0),1000000000000000000) (tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#41)\n", - "markdown": "[C.bad1()](tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#L40-L42) ignores return value by [t.transferFrom(address(this),address(0),1000000000000000000)](tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#L41)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unchecked-transfer/0.7.6/unused_return_transfers.sol#L40-L42", - "id": "eb40769155f8a641f5841fb036ba726b798603ce8cde222293c77d436f0c3657", - "check": "unchecked-transfer", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol.0.4.25.UnimplementedFunctionDetection.json b/tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol.0.4.25.UnimplementedFunctionDetection.json deleted file mode 100644 index 002670fea..000000000 --- a/tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol.0.4.25.UnimplementedFunctionDetection.json +++ /dev/null @@ -1,336 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "DerivedContract_good", - "source_mapping": { - "start": 775, - "length": 243, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37, - 38, - 39, - 40, - 41 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "get", - "source_mapping": { - "start": 495, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface3", - "source_mapping": { - "start": 465, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "get(uint256)" - } - } - ], - "description": "DerivedContract_good (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#35-41) does not implement functions:\n\t- BaseInterface3.get(uint256) (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#24)\n", - "markdown": "[DerivedContract_good](tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L35-L41) does not implement functions:\n\t- [BaseInterface3.get(uint256)](tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L35-L41", - "id": "08d3e8a72b5da6d189acb46ecd36f00787a87812727526a0cae248a2bac348fc", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "DerivedContract_bad2", - "source_mapping": { - "start": 541, - "length": 232, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "get", - "source_mapping": { - "start": 495, - "length": 42, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface3", - "source_mapping": { - "start": 465, - "length": 74, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "get(uint256)" - } - } - ], - "description": "DerivedContract_bad2 (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#27-33) does not implement functions:\n\t- BaseInterface3.get(uint256) (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#24)\n", - "markdown": "[DerivedContract_bad2](tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L27-L33) does not implement functions:\n\t- [BaseInterface3.get(uint256)](tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L27-L33", - "id": "31915d2f480e24ddd054de973440a02abdac0ccd6332c47cd4eb8d836d3fddda", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "DerivedContract_bad0", - "source_mapping": { - "start": 185, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "f2", - "source_mapping": { - "start": 72, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 5, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface", - "source_mapping": { - "start": 0, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f2()" - } - }, - { - "type": "function", - "name": "f3", - "source_mapping": { - "start": 144, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface2", - "source_mapping": { - "start": 113, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f3()" - } - } - ], - "description": "DerivedContract_bad0 (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#10-14) does not implement functions:\n\t- BaseInterface.f2() (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#3)\n\t- BaseInterface2.f3() (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#7)\n", - "markdown": "[DerivedContract_bad0](tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L10-L14) does not implement functions:\n\t- [BaseInterface.f2()](tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L3)\n\t- [BaseInterface2.f3()](tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L10-L14", - "id": "8614d351f7aac0c05e8df6ef7c89c6b46a2b8acf6295c9d5a886ff6489c74a41", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "AbstractContract_bad1", - "source_mapping": { - "start": 320, - "length": 143, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "f1", - "source_mapping": { - "start": 357, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AbstractContract_bad1", - "source_mapping": { - "start": 320, - "length": 143, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f1()" - } - } - ], - "description": "AbstractContract_bad1 (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#16-21) does not implement functions:\n\t- AbstractContract_bad1.f1() (tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#17)\n", - "markdown": "[AbstractContract_bad1](tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L16-L21) does not implement functions:\n\t- [AbstractContract_bad1.f1()](tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L17)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.4.25/unimplemented.sol#L16-L21", - "id": "adc202df4717efc4e19b549c0e623a79fac759a36bffb5d5e4aac401e33375d7", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol.0.5.16.UnimplementedFunctionDetection.json b/tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol.0.5.16.UnimplementedFunctionDetection.json deleted file mode 100644 index ea4ac759e..000000000 --- a/tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol.0.5.16.UnimplementedFunctionDetection.json +++ /dev/null @@ -1,190 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "DerivedContract_bad0", - "source_mapping": { - "start": 185, - "length": 133, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "f2", - "source_mapping": { - "start": 72, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 5, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface", - "source_mapping": { - "start": 0, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f2()" - } - }, - { - "type": "function", - "name": "f3", - "source_mapping": { - "start": 144, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface2", - "source_mapping": { - "start": 113, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f3()" - } - } - ], - "description": "DerivedContract_bad0 (tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#10-14) does not implement functions:\n\t- BaseInterface.f2() (tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#3)\n\t- BaseInterface2.f3() (tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#7)\n", - "markdown": "[DerivedContract_bad0](tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#L10-L14) does not implement functions:\n\t- [BaseInterface.f2()](tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#L3)\n\t- [BaseInterface2.f3()](tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#L10-L14", - "id": "8614d351f7aac0c05e8df6ef7c89c6b46a2b8acf6295c9d5a886ff6489c74a41", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "AbstractContract_bad1", - "source_mapping": { - "start": 320, - "length": 143, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "f1", - "source_mapping": { - "start": 357, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AbstractContract_bad1", - "source_mapping": { - "start": 320, - "length": 143, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f1()" - } - } - ], - "description": "AbstractContract_bad1 (tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#16-21) does not implement functions:\n\t- AbstractContract_bad1.f1() (tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#17)\n", - "markdown": "[AbstractContract_bad1](tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#L16-L21) does not implement functions:\n\t- [AbstractContract_bad1.f1()](tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#L17)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented.sol#L16-L21", - "id": "adc202df4717efc4e19b549c0e623a79fac759a36bffb5d5e4aac401e33375d7", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented_interfaces.sol.0.5.16.UnimplementedFunctionDetection.json b/tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented_interfaces.sol.0.5.16.UnimplementedFunctionDetection.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unimplemented-functions/0.5.16/unimplemented_interfaces.sol.0.5.16.UnimplementedFunctionDetection.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol.0.6.11.UnimplementedFunctionDetection.json b/tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol.0.6.11.UnimplementedFunctionDetection.json deleted file mode 100644 index 9d5db3cbc..000000000 --- a/tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol.0.6.11.UnimplementedFunctionDetection.json +++ /dev/null @@ -1,263 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "DerivedContract_bad2", - "source_mapping": { - "start": 593, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "get", - "source_mapping": { - "start": 539, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface3", - "source_mapping": { - "start": 500, - "length": 91, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "get(uint256)" - } - } - ], - "description": "DerivedContract_bad2 (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#27-33) does not implement functions:\n\t- BaseInterface3.get(uint256) (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#24)\n", - "markdown": "[DerivedContract_bad2](tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#L27-L33) does not implement functions:\n\t- [BaseInterface3.get(uint256)](tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#L27-L33", - "id": "31915d2f480e24ddd054de973440a02abdac0ccd6332c47cd4eb8d836d3fddda", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "DerivedContract_bad0", - "source_mapping": { - "start": 185, - "length": 151, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "f2", - "source_mapping": { - "start": 72, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 5, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface", - "source_mapping": { - "start": 0, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f2()" - } - }, - { - "type": "function", - "name": "f3", - "source_mapping": { - "start": 144, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface2", - "source_mapping": { - "start": 113, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f3()" - } - } - ], - "description": "DerivedContract_bad0 (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#10-14) does not implement functions:\n\t- BaseInterface.f2() (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#3)\n\t- BaseInterface2.f3() (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#7)\n", - "markdown": "[DerivedContract_bad0](tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#L10-L14) does not implement functions:\n\t- [BaseInterface.f2()](tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#L3)\n\t- [BaseInterface2.f3()](tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#L10-L14", - "id": "8614d351f7aac0c05e8df6ef7c89c6b46a2b8acf6295c9d5a886ff6489c74a41", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "AbstractContract_bad1", - "source_mapping": { - "start": 338, - "length": 160, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "f1", - "source_mapping": { - "start": 384, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AbstractContract_bad1", - "source_mapping": { - "start": 338, - "length": 160, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f1()" - } - } - ], - "description": "AbstractContract_bad1 (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#16-21) does not implement functions:\n\t- AbstractContract_bad1.f1() (tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#17)\n", - "markdown": "[AbstractContract_bad1](tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#L16-L21) does not implement functions:\n\t- [AbstractContract_bad1.f1()](tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#L17)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented.sol#L16-L21", - "id": "adc202df4717efc4e19b549c0e623a79fac759a36bffb5d5e4aac401e33375d7", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented_interfaces.sol.0.6.11.UnimplementedFunctionDetection.json b/tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented_interfaces.sol.0.6.11.UnimplementedFunctionDetection.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unimplemented-functions/0.6.11/unimplemented_interfaces.sol.0.6.11.UnimplementedFunctionDetection.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol.0.7.6.UnimplementedFunctionDetection.json b/tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol.0.7.6.UnimplementedFunctionDetection.json deleted file mode 100644 index a8a2dcc4a..000000000 --- a/tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol.0.7.6.UnimplementedFunctionDetection.json +++ /dev/null @@ -1,263 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "DerivedContract_bad2", - "source_mapping": { - "start": 593, - "length": 344, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 27, - 28, - 29, - 30, - 31, - 32, - 33 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "get", - "source_mapping": { - "start": 539, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 24 - ], - "starting_column": 5, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface3", - "source_mapping": { - "start": 500, - "length": 91, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "get(uint256)" - } - } - ], - "description": "DerivedContract_bad2 (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#27-33) does not implement functions:\n\t- BaseInterface3.get(uint256) (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#24)\n", - "markdown": "[DerivedContract_bad2](tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#L27-L33) does not implement functions:\n\t- [BaseInterface3.get(uint256)](tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#L24)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#L27-L33", - "id": "31915d2f480e24ddd054de973440a02abdac0ccd6332c47cd4eb8d836d3fddda", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "DerivedContract_bad0", - "source_mapping": { - "start": 185, - "length": 151, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "f2", - "source_mapping": { - "start": 72, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 5, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface", - "source_mapping": { - "start": 0, - "length": 111, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f2()" - } - }, - { - "type": "function", - "name": "f3", - "source_mapping": { - "start": 144, - "length": 37, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BaseInterface2", - "source_mapping": { - "start": 113, - "length": 70, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f3()" - } - } - ], - "description": "DerivedContract_bad0 (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#10-14) does not implement functions:\n\t- BaseInterface.f2() (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#3)\n\t- BaseInterface2.f3() (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#7)\n", - "markdown": "[DerivedContract_bad0](tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#L10-L14) does not implement functions:\n\t- [BaseInterface.f2()](tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#L3)\n\t- [BaseInterface2.f3()](tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#L7)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#L10-L14", - "id": "8614d351f7aac0c05e8df6ef7c89c6b46a2b8acf6295c9d5a886ff6489c74a41", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "AbstractContract_bad1", - "source_mapping": { - "start": 338, - "length": 160, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "f1", - "source_mapping": { - "start": 384, - "length": 45, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 17 - ], - "starting_column": 5, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AbstractContract_bad1", - "source_mapping": { - "start": 338, - "length": 160, - "filename_relative": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol", - "is_dependency": false, - "lines": [ - 16, - 17, - 18, - 19, - 20, - 21 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "f1()" - } - } - ], - "description": "AbstractContract_bad1 (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#16-21) does not implement functions:\n\t- AbstractContract_bad1.f1() (tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#17)\n", - "markdown": "[AbstractContract_bad1](tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#L16-L21) does not implement functions:\n\t- [AbstractContract_bad1.f1()](tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#L17)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented.sol#L16-L21", - "id": "adc202df4717efc4e19b549c0e623a79fac759a36bffb5d5e4aac401e33375d7", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented_interfaces.sol.0.7.6.UnimplementedFunctionDetection.json b/tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented_interfaces.sol.0.7.6.UnimplementedFunctionDetection.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unimplemented-functions/0.7.6/unimplemented_interfaces.sol.0.7.6.UnimplementedFunctionDetection.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol.0.4.25.UninitializedFunctionPtrsConstructor.json b/tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol.0.4.25.UninitializedFunctionPtrsConstructor.json deleted file mode 100644 index 3d768545e..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol.0.4.25.UninitializedFunctionPtrsConstructor.json +++ /dev/null @@ -1,421 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "bad2", - "source_mapping": { - "start": 486, - "length": 199, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "s.a(10)", - "source_mapping": { - "start": 671, - "length": 7, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 5, - "ending_column": 12 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 628, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "bad2", - "source_mapping": { - "start": 486, - "length": 199, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Contract bad2 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#20-29) \n\t s.a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#27) is an unintialized function pointer call in a constructor\n", - "markdown": "Contract [bad2](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L20-L29) \n\t [s.a(10)](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L27) is an unintialized function pointer call in a constructor\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L20-L29", - "id": "48965b294d666c5558ddadb16c50004510a7a482f96c0e552626f8c22c74763d", - "check": "uninitialized-fptr-cst", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "bad0", - "source_mapping": { - "start": 27, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "a(10)", - "source_mapping": { - "start": 164, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 45, - "length": 129, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "bad0", - "source_mapping": { - "start": 27, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Contract bad0 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#3-9) \n\t a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#7) is an unintialized function pointer call in a constructor\n", - "markdown": "Contract [bad0](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L3-L9) \n\t [a(10)](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L7) is an unintialized function pointer call in a constructor\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L3-L9", - "id": "5cc40c11bac1ce653b3ff8b4ca493a62f4b47720aa75fb8e5bd5396e8821a464", - "check": "uninitialized-fptr-cst", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "bad3", - "source_mapping": { - "start": 687, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "a(10)", - "source_mapping": { - "start": 858, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 36 - ], - "starting_column": 5, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 831, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37, - 38 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "bad3", - "source_mapping": { - "start": 687, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Contract bad3 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#31-42) \n\t a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#36) is an unintialized function pointer call in a constructor\n", - "markdown": "Contract [bad3](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L31-L42) \n\t [a(10)](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L36) is an unintialized function pointer call in a constructor\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L31-L42", - "id": "7c27b9d3ec2de9d0a7adc058d3fea7f1a2cd4cc9b13b0057c52e60fbc63fedc5", - "check": "uninitialized-fptr-cst", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "bad1", - "source_mapping": { - "start": 178, - "length": 306, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "b(10)", - "source_mapping": { - "start": 472, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 196, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "bad1", - "source_mapping": { - "start": 178, - "length": 306, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Contract bad1 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#11-18) \n\t b(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#16) is an unintialized function pointer call in a constructor\n", - "markdown": "Contract [bad1](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L11-L18) \n\t [b(10)](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L16) is an unintialized function pointer call in a constructor\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.4.25/uninitialized_function_ptr_constructor.sol#L11-L18", - "id": "ab3fbfc5752a20c2e3c19725ed0a12e9efa5f3afdbad0e5846e8ca1f02a3b712", - "check": "uninitialized-fptr-cst", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.16/uninitialized_function_ptr_constructor.sol.0.5.16.UninitializedFunctionPtrsConstructor.json b/tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.16/uninitialized_function_ptr_constructor.sol.0.5.16.UninitializedFunctionPtrsConstructor.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.16/uninitialized_function_ptr_constructor.sol.0.5.16.UninitializedFunctionPtrsConstructor.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol.0.5.8.UninitializedFunctionPtrsConstructor.json b/tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol.0.5.8.UninitializedFunctionPtrsConstructor.json deleted file mode 100644 index d8f65e902..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol.0.5.8.UninitializedFunctionPtrsConstructor.json +++ /dev/null @@ -1,421 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "bad3", - "source_mapping": { - "start": 687, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "a(10)", - "source_mapping": { - "start": 858, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 36 - ], - "starting_column": 5, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 831, - "length": 50, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 35, - 36, - 37, - 38 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "bad3", - "source_mapping": { - "start": 687, - "length": 269, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Contract bad3 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#31-42) \n\t a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#36) is an unintialized function pointer call in a constructor\n", - "markdown": "Contract [bad3](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L31-L42) \n\t [a(10)](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L36) is an unintialized function pointer call in a constructor\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L31-L42", - "id": "0b6c6f4112e4bd5ae791a8f775dfb7bab683b836ad651088919fcac9eb919506", - "check": "uninitialized-fptr-cst", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "bad1", - "source_mapping": { - "start": 178, - "length": 306, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "b(10)", - "source_mapping": { - "start": 472, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 5, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 196, - "length": 286, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "bad1", - "source_mapping": { - "start": 178, - "length": 306, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Contract bad1 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#11-18) \n\t b(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#16) is an unintialized function pointer call in a constructor\n", - "markdown": "Contract [bad1](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L11-L18) \n\t [b(10)](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L16) is an unintialized function pointer call in a constructor\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L11-L18", - "id": "22cdfafee9843c6f077ea2c73482297e3bc2a99684751e011f70f4ba25f75432", - "check": "uninitialized-fptr-cst", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "bad0", - "source_mapping": { - "start": 27, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "a(10)", - "source_mapping": { - "start": 164, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 45, - "length": 129, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6, - 7, - 8 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "bad0", - "source_mapping": { - "start": 27, - "length": 149, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Contract bad0 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#3-9) \n\t a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#7) is an unintialized function pointer call in a constructor\n", - "markdown": "Contract [bad0](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L3-L9) \n\t [a(10)](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L7) is an unintialized function pointer call in a constructor\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L3-L9", - "id": "6296e46dabc9a0ec1bffc6ddd4c2660676b1c5d61b151282e8265c24b9bdf102", - "check": "uninitialized-fptr-cst", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "contract", - "name": "bad2", - "source_mapping": { - "start": 486, - "length": 199, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "node", - "name": "s.a(10)", - "source_mapping": { - "start": 671, - "length": 7, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 27 - ], - "starting_column": 5, - "ending_column": 12 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 628, - "length": 55, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 25, - 26, - 27, - 28 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "bad2", - "source_mapping": { - "start": 486, - "length": 199, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Contract bad2 (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#20-29) \n\t s.a(10) (tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#27) is an unintialized function pointer call in a constructor\n", - "markdown": "Contract [bad2](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L20-L29) \n\t [s.a(10)](tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L27) is an unintialized function pointer call in a constructor\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-fptr-cst/0.5.8/uninitialized_function_ptr_constructor.sol#L20-L29", - "id": "b5b9c1cfba830927aa14b83f505668f4a35b2fec54f9f2a2d50e5f8ead8bb8bf", - "check": "uninitialized-fptr-cst", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol.0.4.25.UninitializedLocalVars.json b/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol.0.4.25.UninitializedLocalVars.json deleted file mode 100644 index cb09a2128..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol.0.4.25.UninitializedLocalVars.json +++ /dev/null @@ -1,83 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "uint_not_init", - "source_mapping": { - "start": 77, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "func", - "source_mapping": { - "start": 29, - "length": 143, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 0, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "func()" - } - } - } - } - ], - "description": "Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol#4) is a local variable never initialized\n", - "markdown": "[Uninitialized.func().uint_not_init](tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol#L4) is a local variable never initialized\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol#L4", - "id": "6ef627d0a3f7234c0d3dd339ae4cf3c1adf898f03384e08c3c8d846c67e0d476", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol.0.5.16.UninitializedLocalVars.json b/tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol.0.5.16.UninitializedLocalVars.json deleted file mode 100644 index 815146f15..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol.0.5.16.UninitializedLocalVars.json +++ /dev/null @@ -1,83 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "uint_not_init", - "source_mapping": { - "start": 77, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "func", - "source_mapping": { - "start": 29, - "length": 143, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 0, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "func()" - } - } - } - } - ], - "description": "Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol#4) is a local variable never initialized\n", - "markdown": "[Uninitialized.func().uint_not_init](tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol#L4) is a local variable never initialized\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-local/0.5.16/uninitialized_local_variable.sol#L4", - "id": "6ef627d0a3f7234c0d3dd339ae4cf3c1adf898f03384e08c3c8d846c67e0d476", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol.0.6.11.UninitializedLocalVars.json b/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol.0.6.11.UninitializedLocalVars.json deleted file mode 100644 index 2dc1ac349..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol.0.6.11.UninitializedLocalVars.json +++ /dev/null @@ -1,83 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "uint_not_init", - "source_mapping": { - "start": 77, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "func", - "source_mapping": { - "start": 29, - "length": 143, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 0, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "func()" - } - } - } - } - ], - "description": "Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol#4) is a local variable never initialized\n", - "markdown": "[Uninitialized.func().uint_not_init](tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol#L4) is a local variable never initialized\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol#L4", - "id": "6ef627d0a3f7234c0d3dd339ae4cf3c1adf898f03384e08c3c8d846c67e0d476", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol.0.7.6.UninitializedLocalVars.json b/tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol.0.7.6.UninitializedLocalVars.json deleted file mode 100644 index 386c6fdac..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol.0.7.6.UninitializedLocalVars.json +++ /dev/null @@ -1,83 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "uint_not_init", - "source_mapping": { - "start": 77, - "length": 18, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "func", - "source_mapping": { - "start": 29, - "length": 143, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 0, - "length": 179, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "func()" - } - } - } - } - ], - "description": "Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol#4) is a local variable never initialized\n", - "markdown": "[Uninitialized.func().uint_not_init](tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol#L4) is a local variable never initialized\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol#L4", - "id": "6ef627d0a3f7234c0d3dd339ae4cf3c1adf898f03384e08c3c8d846c67e0d476", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol.0.4.25.UninitializedStateVarsDetection.json b/tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol.0.4.25.UninitializedStateVarsDetection.json deleted file mode 100644 index 144a7dba1..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol.0.4.25.UninitializedStateVarsDetection.json +++ /dev/null @@ -1,456 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "st", - "source_mapping": { - "start": 698, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 45 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 644, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "use", - "source_mapping": { - "start": 878, - "length": 117, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 53, - 54, - 55, - 56 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 644, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "use()" - } - } - ], - "description": "Test2.st (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#45) is never initialized. It is used in:\n\t- Test2.use() (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#53-56)\n", - "markdown": "[Test2.st](tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L45) is never initialized. It is used in:\n\t- [Test2.use()](tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L53-L56)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L45", - "id": "427f100397f455d8000eff7b1d2463763ca8e452d5d98f7b7de693fd5e625a32", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "balances", - "source_mapping": { - "start": 192, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 172, - "length": 332, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "use", - "source_mapping": { - "start": 359, - "length": 143, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 172, - "length": 332, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "use()" - } - } - ], - "description": "Test.balances (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#15) is never initialized. It is used in:\n\t- Test.use() (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#23-26)\n", - "markdown": "[Test.balances](tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L15) is never initialized. It is used in:\n\t- [Test.use()](tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L23-L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L15", - "id": "a2750d175b02d51aeb47a4576f74725ba991d3c8cf828a33ee78ccc34cf9e7d7", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 751, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 47 - ], - "starting_column": 5, - "ending_column": 11 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 644, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "init", - "source_mapping": { - "start": 820, - "length": 52, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 644, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "init()" - } - } - ], - "description": "Test2.v (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#47) is never initialized. It is used in:\n\t- Test2.init() (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#49-51)\n", - "markdown": "[Test2.v](tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L47) is never initialized. It is used in:\n\t- [Test2.init()](tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L49-L51)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L47", - "id": "bf96eee949943a12926cf1407a2df2b07e99b30a6fc2e78aebf088cdefcf77a7", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "destination", - "source_mapping": { - "start": 58, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 29, - "length": 140, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "transfer", - "source_mapping": { - "start": 84, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 29, - "length": 140, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transfer()" - } - } - ], - "description": "Uninitialized.destination (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#5) is never initialized. It is used in:\n\t- Uninitialized.transfer() (tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#7-9)\n", - "markdown": "[Uninitialized.destination](tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L5) is never initialized. It is used in:\n\t- [Uninitialized.transfer()](tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L7-L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.4.25/uninitialized.sol#L5", - "id": "e4711aebbd53922a9fe1e728917bf8e98eac065305e20d766b6b552debe79e44", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol.0.5.16.UninitializedStateVarsDetection.json b/tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol.0.5.16.UninitializedStateVarsDetection.json deleted file mode 100644 index 9af086d34..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol.0.5.16.UninitializedStateVarsDetection.json +++ /dev/null @@ -1,456 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "st", - "source_mapping": { - "start": 729, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 45 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "use", - "source_mapping": { - "start": 916, - "length": 129, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 53, - 54, - 55, - 56 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "use()" - } - } - ], - "description": "Test2.st (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#45) is never initialized. It is used in:\n\t- Test2.use() (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#53-56)\n", - "markdown": "[Test2.st](tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L45) is never initialized. It is used in:\n\t- [Test2.use()](tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L53-L56)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L45", - "id": "427f100397f455d8000eff7b1d2463763ca8e452d5d98f7b7de693fd5e625a32", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "balances", - "source_mapping": { - "start": 199, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 179, - "length": 349, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "use", - "source_mapping": { - "start": 372, - "length": 154, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 179, - "length": 349, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "use()" - } - } - ], - "description": "Test.balances (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#15) is never initialized. It is used in:\n\t- Test.use() (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#23-26)\n", - "markdown": "[Test.balances](tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L15) is never initialized. It is used in:\n\t- [Test.use()](tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L23-L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L15", - "id": "a2750d175b02d51aeb47a4576f74725ba991d3c8cf828a33ee78ccc34cf9e7d7", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 782, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 47 - ], - "starting_column": 5, - "ending_column": 11 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "init", - "source_mapping": { - "start": 851, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "init()" - } - } - ], - "description": "Test2.v (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#47) is never initialized. It is used in:\n\t- Test2.init() (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#49-51)\n", - "markdown": "[Test2.v](tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L47) is never initialized. It is used in:\n\t- [Test2.init()](tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L49-L51)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L47", - "id": "bf96eee949943a12926cf1407a2df2b07e99b30a6fc2e78aebf088cdefcf77a7", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "destination", - "source_mapping": { - "start": 57, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 28, - "length": 148, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "transfer", - "source_mapping": { - "start": 91, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 28, - "length": 148, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transfer()" - } - } - ], - "description": "Uninitialized.destination (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#5) is never initialized. It is used in:\n\t- Uninitialized.transfer() (tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#7-9)\n", - "markdown": "[Uninitialized.destination](tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L5) is never initialized. It is used in:\n\t- [Uninitialized.transfer()](tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L7-L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.5.16/uninitialized.sol#L5", - "id": "e4711aebbd53922a9fe1e728917bf8e98eac065305e20d766b6b552debe79e44", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol.0.6.11.UninitializedStateVarsDetection.json b/tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol.0.6.11.UninitializedStateVarsDetection.json deleted file mode 100644 index 4bffc62b2..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol.0.6.11.UninitializedStateVarsDetection.json +++ /dev/null @@ -1,456 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "st", - "source_mapping": { - "start": 729, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 45 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "use", - "source_mapping": { - "start": 916, - "length": 129, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 53, - 54, - 55, - 56 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "use()" - } - } - ], - "description": "Test2.st (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#45) is never initialized. It is used in:\n\t- Test2.use() (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#53-56)\n", - "markdown": "[Test2.st](tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L45) is never initialized. It is used in:\n\t- [Test2.use()](tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L53-L56)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L45", - "id": "427f100397f455d8000eff7b1d2463763ca8e452d5d98f7b7de693fd5e625a32", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "balances", - "source_mapping": { - "start": 199, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 179, - "length": 349, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "use", - "source_mapping": { - "start": 372, - "length": 154, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 179, - "length": 349, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "use()" - } - } - ], - "description": "Test.balances (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#15) is never initialized. It is used in:\n\t- Test.use() (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#23-26)\n", - "markdown": "[Test.balances](tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L15) is never initialized. It is used in:\n\t- [Test.use()](tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L23-L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L15", - "id": "a2750d175b02d51aeb47a4576f74725ba991d3c8cf828a33ee78ccc34cf9e7d7", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 782, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 47 - ], - "starting_column": 5, - "ending_column": 11 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "init", - "source_mapping": { - "start": 851, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "init()" - } - } - ], - "description": "Test2.v (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#47) is never initialized. It is used in:\n\t- Test2.init() (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#49-51)\n", - "markdown": "[Test2.v](tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L47) is never initialized. It is used in:\n\t- [Test2.init()](tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L49-L51)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L47", - "id": "bf96eee949943a12926cf1407a2df2b07e99b30a6fc2e78aebf088cdefcf77a7", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "destination", - "source_mapping": { - "start": 57, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 28, - "length": 148, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "transfer", - "source_mapping": { - "start": 91, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 28, - "length": 148, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transfer()" - } - } - ], - "description": "Uninitialized.destination (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#5) is never initialized. It is used in:\n\t- Uninitialized.transfer() (tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#7-9)\n", - "markdown": "[Uninitialized.destination](tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L5) is never initialized. It is used in:\n\t- [Uninitialized.transfer()](tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L7-L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.6.11/uninitialized.sol#L5", - "id": "e4711aebbd53922a9fe1e728917bf8e98eac065305e20d766b6b552debe79e44", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol.0.7.6.UninitializedStateVarsDetection.json b/tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol.0.7.6.UninitializedStateVarsDetection.json deleted file mode 100644 index dbd437c52..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol.0.7.6.UninitializedStateVarsDetection.json +++ /dev/null @@ -1,456 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "st", - "source_mapping": { - "start": 729, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 45 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "use", - "source_mapping": { - "start": 916, - "length": 129, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 53, - 54, - 55, - 56 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "use()" - } - } - ], - "description": "Test2.st (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#45) is never initialized. It is used in:\n\t- Test2.use() (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#53-56)\n", - "markdown": "[Test2.st](tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L45) is never initialized. It is used in:\n\t- [Test2.use()](tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L53-L56)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L45", - "id": "427f100397f455d8000eff7b1d2463763ca8e452d5d98f7b7de693fd5e625a32", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "balances", - "source_mapping": { - "start": 199, - "length": 34, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 5, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 179, - "length": 349, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "use", - "source_mapping": { - "start": 372, - "length": 154, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 23, - 24, - 25, - 26 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 179, - "length": 349, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "use()" - } - } - ], - "description": "Test.balances (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#15) is never initialized. It is used in:\n\t- Test.use() (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#23-26)\n", - "markdown": "[Test.balances](tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L15) is never initialized. It is used in:\n\t- [Test.use()](tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L23-L26)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L15", - "id": "a2750d175b02d51aeb47a4576f74725ba991d3c8cf828a33ee78ccc34cf9e7d7", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "v", - "source_mapping": { - "start": 782, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 47 - ], - "starting_column": 5, - "ending_column": 11 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "init", - "source_mapping": { - "start": 851, - "length": 59, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 49, - 50, - 51 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test2", - "source_mapping": { - "start": 675, - "length": 373, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "init()" - } - } - ], - "description": "Test2.v (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#47) is never initialized. It is used in:\n\t- Test2.init() (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#49-51)\n", - "markdown": "[Test2.v](tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L47) is never initialized. It is used in:\n\t- [Test2.init()](tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L49-L51)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L47", - "id": "bf96eee949943a12926cf1407a2df2b07e99b30a6fc2e78aebf088cdefcf77a7", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "destination", - "source_mapping": { - "start": 57, - "length": 27, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 28, - "length": 148, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "function", - "name": "transfer", - "source_mapping": { - "start": 91, - "length": 82, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 28, - "length": 148, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "transfer()" - } - } - ], - "description": "Uninitialized.destination (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#5) is never initialized. It is used in:\n\t- Uninitialized.transfer() (tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#7-9)\n", - "markdown": "[Uninitialized.destination](tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L5) is never initialized. It is used in:\n\t- [Uninitialized.transfer()](tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L7-L9)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-state/0.7.6/uninitialized.sol#L5", - "id": "e4711aebbd53922a9fe1e728917bf8e98eac065305e20d766b6b552debe79e44", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol.0.4.25.UninitializedStorageVars.json b/tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol.0.4.25.UninitializedStorageVars.json deleted file mode 100644 index d67fa7dc1..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol.0.4.25.UninitializedStorageVars.json +++ /dev/null @@ -1,89 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "st_bug", - "source_mapping": { - "start": 171, - "length": 9, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "func", - "source_mapping": { - "start": 67, - "length": 143, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 0, - "length": 217, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "func()" - } - } - } - } - ], - "description": "Uninitialized.func().st_bug (tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol#10) is a storage variable never initialized\n", - "markdown": "[Uninitialized.func().st_bug](tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol#L10) is a storage variable never initialized\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-storage/0.4.25/uninitialized_storage_pointer.sol#L10", - "id": "b8f7c2470a8a7f83fd42dca40c50cbf2070e7fa5486c674585f2b0b39d3dc429", - "check": "uninitialized-storage", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol.0.8.19.UninitializedStorageVars.json b/tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol.0.8.19.UninitializedStorageVars.json deleted file mode 100644 index 4b867cc05..000000000 --- a/tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol.0.8.19.UninitializedStorageVars.json +++ /dev/null @@ -1,90 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "ret", - "source_mapping": { - "start": 100, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 38, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad", - "source_mapping": { - "start": 67, - "length": 95, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol", - "is_dependency": false, - "lines": [ - 7, - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Uninitialized", - "source_mapping": { - "start": 0, - "length": 262, - "filename_relative": "tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad()" - } - } - } - } - ], - "description": "Uninitialized.bad().ret (tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol#7) is a storage variable never initialized\n", - "markdown": "[Uninitialized.bad().ret](tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol#L7) is a storage variable never initialized\n", - "first_markdown_element": "tests/e2e/detectors/test_data/uninitialized-storage/0.8.19/uninitialized_storage_pointer.sol#L7", - "id": "979d28e501693ed7ece0d429e7c30266f8e9d6a2e2eedc87006c4bad63e78706", - "check": "uninitialized-storage", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol.0.4.25.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol.0.4.25.UnprotectedUpgradeable.json deleted file mode 100644 index 5338de68e..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol.0.4.25.UnprotectedUpgradeable.json +++ /dev/null @@ -1,148 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 277, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "function", - "name": "initialize", - "source_mapping": { - "start": 88, - "length": 115, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 277, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "initialize()" - } - }, - { - "type": "function", - "name": "kill", - "source_mapping": { - "start": 208, - "length": 98, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 277, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "kill()" - } - } - ], - "description": "Buggy (tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol#3-15) is an upgradeable contract that does not protect its initialize functions: Buggy.initialize() (tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol#6-9). Anyone can delete the contract with: Buggy.kill() (tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol#10-13)", - "markdown": "[Buggy](tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol#L3-L15) is an upgradeable contract that does not protect its initialize functions: [Buggy.initialize()](tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol#L6-L9). Anyone can delete the contract with: [Buggy.kill()](tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol#L10-L13)", - "first_markdown_element": "tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Buggy.sol#L3-L15", - "id": "d85b90230632a30f7ffb5140a791d4a9ae8b0be045c5b27175f3c477e189c08c", - "check": "unprotected-upgrade", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Fixed.sol.0.4.25.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Fixed.sol.0.4.25.UnprotectedUpgradeable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/Fixed.sol.0.4.25.UnprotectedUpgradeable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/whitelisted.sol.0.4.25.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/whitelisted.sol.0.4.25.UnprotectedUpgradeable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.4.25/whitelisted.sol.0.4.25.UnprotectedUpgradeable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol.0.5.16.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol.0.5.16.UnprotectedUpgradeable.json deleted file mode 100644 index 5c95df3d9..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol.0.5.16.UnprotectedUpgradeable.json +++ /dev/null @@ -1,148 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 285, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "function", - "name": "initialize", - "source_mapping": { - "start": 96, - "length": 115, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 285, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "initialize()" - } - }, - { - "type": "function", - "name": "kill", - "source_mapping": { - "start": 216, - "length": 98, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 285, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "kill()" - } - } - ], - "description": "Buggy (tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol#3-15) is an upgradeable contract that does not protect its initialize functions: Buggy.initialize() (tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol#6-9). Anyone can delete the contract with: Buggy.kill() (tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol#10-13)", - "markdown": "[Buggy](tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol#L3-L15) is an upgradeable contract that does not protect its initialize functions: [Buggy.initialize()](tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol#L6-L9). Anyone can delete the contract with: [Buggy.kill()](tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol#L10-L13)", - "first_markdown_element": "tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Buggy.sol#L3-L15", - "id": "d85b90230632a30f7ffb5140a791d4a9ae8b0be045c5b27175f3c477e189c08c", - "check": "unprotected-upgrade", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Fixed.sol.0.5.16.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Fixed.sol.0.5.16.UnprotectedUpgradeable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/Fixed.sol.0.5.16.UnprotectedUpgradeable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/whitelisted.sol.0.5.16.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/whitelisted.sol.0.5.16.UnprotectedUpgradeable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.5.16/whitelisted.sol.0.5.16.UnprotectedUpgradeable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol.0.6.11.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol.0.6.11.UnprotectedUpgradeable.json deleted file mode 100644 index 6612db2c4..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol.0.6.11.UnprotectedUpgradeable.json +++ /dev/null @@ -1,148 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 285, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "function", - "name": "initialize", - "source_mapping": { - "start": 96, - "length": 115, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 285, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "initialize()" - } - }, - { - "type": "function", - "name": "kill", - "source_mapping": { - "start": 216, - "length": 98, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 285, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "kill()" - } - } - ], - "description": "Buggy (tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol#3-15) is an upgradeable contract that does not protect its initialize functions: Buggy.initialize() (tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol#6-9). Anyone can delete the contract with: Buggy.kill() (tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol#10-13)", - "markdown": "[Buggy](tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol#L3-L15) is an upgradeable contract that does not protect its initialize functions: [Buggy.initialize()](tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol#L6-L9). Anyone can delete the contract with: [Buggy.kill()](tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol#L10-L13)", - "first_markdown_element": "tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Buggy.sol#L3-L15", - "id": "d85b90230632a30f7ffb5140a791d4a9ae8b0be045c5b27175f3c477e189c08c", - "check": "unprotected-upgrade", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Fixed.sol.0.6.11.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Fixed.sol.0.6.11.UnprotectedUpgradeable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/Fixed.sol.0.6.11.UnprotectedUpgradeable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/whitelisted.sol.0.6.11.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/whitelisted.sol.0.6.11.UnprotectedUpgradeable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.6.11/whitelisted.sol.0.6.11.UnprotectedUpgradeable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol.0.7.6.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol.0.7.6.UnprotectedUpgradeable.json deleted file mode 100644 index 4ee7824d0..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol.0.7.6.UnprotectedUpgradeable.json +++ /dev/null @@ -1,148 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 285, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "function", - "name": "initialize", - "source_mapping": { - "start": 96, - "length": 115, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 285, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "initialize()" - } - }, - { - "type": "function", - "name": "kill", - "source_mapping": { - "start": 216, - "length": 98, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 285, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "kill()" - } - } - ], - "description": "Buggy (tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol#3-15) is an upgradeable contract that does not protect its initialize functions: Buggy.initialize() (tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol#6-9). Anyone can delete the contract with: Buggy.kill() (tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol#10-13)", - "markdown": "[Buggy](tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol#L3-L15) is an upgradeable contract that does not protect its initialize functions: [Buggy.initialize()](tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol#L6-L9). Anyone can delete the contract with: [Buggy.kill()](tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol#L10-L13)", - "first_markdown_element": "tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Buggy.sol#L3-L15", - "id": "d85b90230632a30f7ffb5140a791d4a9ae8b0be045c5b27175f3c477e189c08c", - "check": "unprotected-upgrade", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Fixed.sol.0.7.6.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Fixed.sol.0.7.6.UnprotectedUpgradeable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/Fixed.sol.0.7.6.UnprotectedUpgradeable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/whitelisted.sol.0.7.6.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/whitelisted.sol.0.7.6.UnprotectedUpgradeable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.7.6/whitelisted.sol.0.7.6.UnprotectedUpgradeable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol.0.8.15.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol.0.8.15.UnprotectedUpgradeable.json deleted file mode 100644 index 69bdcf712..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol.0.8.15.UnprotectedUpgradeable.json +++ /dev/null @@ -1,145 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 294, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - { - "type": "function", - "name": "initialize", - "source_mapping": { - "start": 96, - "length": 124, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol", - "is_dependency": false, - "lines": [ - 6, - 7, - 8, - 9 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 294, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "initialize()" - } - }, - { - "type": "function", - "name": "kill", - "source_mapping": { - "start": 225, - "length": 98, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Buggy", - "source_mapping": { - "start": 31, - "length": 294, - "filename_relative": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "kill()" - } - } - ], - "description": "Buggy (tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol#3-14) is an upgradeable contract that does not protect its initialize functions: Buggy.initialize() (tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol#6-9). Anyone can delete the contract with: Buggy.kill() (tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol#10-13)", - "markdown": "[Buggy](tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol#L3-L14) is an upgradeable contract that does not protect its initialize functions: [Buggy.initialize()](tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol#L6-L9). Anyone can delete the contract with: [Buggy.kill()](tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol#L10-L13)", - "first_markdown_element": "tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Buggy.sol#L3-L14", - "id": "d85b90230632a30f7ffb5140a791d4a9ae8b0be045c5b27175f3c477e189c08c", - "check": "unprotected-upgrade", - "impact": "High", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Fixed.sol.0.8.15.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Fixed.sol.0.8.15.UnprotectedUpgradeable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/Fixed.sol.0.8.15.UnprotectedUpgradeable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/whitelisted.sol.0.8.15.UnprotectedUpgradeable.json b/tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/whitelisted.sol.0.8.15.UnprotectedUpgradeable.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/unprotected-upgrade/0.8.15/whitelisted.sol.0.8.15.UnprotectedUpgradeable.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol.0.4.25.UnusedReturnValues.json b/tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol.0.4.25.UnusedReturnValues.json deleted file mode 100644 index e7bbae2d7..000000000 --- a/tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol.0.4.25.UnusedReturnValues.json +++ /dev/null @@ -1,328 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "test", - "source_mapping": { - "start": 239, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 189, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - }, - { - "type": "node", - "name": "t.f()", - "source_mapping": { - "start": 279, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 239, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 189, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - } - } - } - ], - "description": "User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#18)\n", - "markdown": "[User.test(Target)](tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#L17-L29) ignores return value by [t.f()](tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#L17-L29", - "id": "c5015552dbe34ab3e4ad7fddcf3ce9a62065df0780ac4541d441f23a1617ac53", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "test", - "source_mapping": { - "start": 239, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 189, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - }, - { - "type": "node", - "name": "a.add(0)", - "source_mapping": { - "start": 353, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 239, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 189, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - } - } - } - ], - "description": "User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#22)\n", - "markdown": "[User.test(Target)](tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#L17-L29) ignores return value by [a.add(0)](tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#L17-L29", - "id": "e80688c415b86f06ab1b89934f843c8f566f5f073c821315581f2f93dbb2ac25", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol.0.5.16.UnusedReturnValues.json b/tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol.0.5.16.UnusedReturnValues.json deleted file mode 100644 index a99fba736..000000000 --- a/tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol.0.5.16.UnusedReturnValues.json +++ /dev/null @@ -1,328 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "test", - "source_mapping": { - "start": 239, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 189, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - }, - { - "type": "node", - "name": "t.f()", - "source_mapping": { - "start": 279, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 239, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 189, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - } - } - } - ], - "description": "User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#18)\n", - "markdown": "[User.test(Target)](tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#L17-L29) ignores return value by [t.f()](tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#L17-L29", - "id": "7843b65e61884b02dc8cf4350acc7821049497a85a283c2bc9d0ba86ae3271d1", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "test", - "source_mapping": { - "start": 239, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 189, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - }, - { - "type": "node", - "name": "a.add(0)", - "source_mapping": { - "start": 353, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 239, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 189, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - } - } - } - ], - "description": "User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#22)\n", - "markdown": "[User.test(Target)](tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#L17-L29) ignores return value by [a.add(0)](tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#L17-L29", - "id": "d876e2686a0e1aa7863854de350210a92276a3cb046989301b13d02405b350fd", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol.0.6.11.UnusedReturnValues.json b/tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol.0.6.11.UnusedReturnValues.json deleted file mode 100644 index faaa7ed63..000000000 --- a/tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol.0.6.11.UnusedReturnValues.json +++ /dev/null @@ -1,328 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "test", - "source_mapping": { - "start": 256, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 206, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - }, - { - "type": "node", - "name": "a.add(0)", - "source_mapping": { - "start": 370, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 256, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 206, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - } - } - } - ], - "description": "User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#22)\n", - "markdown": "[User.test(Target)](tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#L17-L29) ignores return value by [a.add(0)](tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#L17-L29", - "id": "3dc614b48b1a73e884a9eab5a5edf9e72ef8150d1f6113cff92c8e07d561ddbb", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "test", - "source_mapping": { - "start": 256, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 206, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - }, - { - "type": "node", - "name": "t.f()", - "source_mapping": { - "start": 296, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 256, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 206, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - } - } - } - ], - "description": "User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#18)\n", - "markdown": "[User.test(Target)](tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#L17-L29) ignores return value by [t.f()](tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#L17-L29", - "id": "4aef1645332b4a0136e6a0e78fd3fa35ddef10772b35bab5e548ea68e635cad2", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol.0.7.6.UnusedReturnValues.json b/tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol.0.7.6.UnusedReturnValues.json deleted file mode 100644 index 976a5e944..000000000 --- a/tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol.0.7.6.UnusedReturnValues.json +++ /dev/null @@ -1,328 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "test", - "source_mapping": { - "start": 256, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 206, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - }, - { - "type": "node", - "name": "a.add(0)", - "source_mapping": { - "start": 370, - "length": 8, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 256, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 206, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - } - } - } - ], - "description": "User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#22)\n", - "markdown": "[User.test(Target)](tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#L17-L29) ignores return value by [a.add(0)](tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#L22)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#L17-L29", - "id": "09f2e1abd220d36055b9a751ae0009c7346054948c4e2bcd2191621412abc445", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "test", - "source_mapping": { - "start": 256, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 206, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - }, - { - "type": "node", - "name": "t.f()", - "source_mapping": { - "start": 296, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "is_dependency": false, - "lines": [ - 18 - ], - "starting_column": 9, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "test", - "source_mapping": { - "start": 256, - "length": 354, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "is_dependency": false, - "lines": [ - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "User", - "source_mapping": { - "start": 206, - "length": 406, - "filename_relative": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol", - "is_dependency": false, - "lines": [ - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "test(Target)" - } - } - } - } - ], - "description": "User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#18)\n", - "markdown": "[User.test(Target)](tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#L17-L29) ignores return value by [t.f()](tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#L18)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#L17-L29", - "id": "9893d158fba1f4647212ce557a98037ba20350e55e7432f6d78ea11860f2ade2", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol.0.4.25.UnusedStateVars.json b/tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol.0.4.25.UnusedStateVars.json deleted file mode 100644 index d1fd736d2..000000000 --- a/tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol.0.4.25.UnusedStateVars.json +++ /dev/null @@ -1,304 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "unused", - "source_mapping": { - "start": 44, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#4) is never used in B (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#11-16)\n", - "markdown": "[A.unused](tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L4) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L4", - "id": "195279490862ae355bac3d27d0cdb1aa18200a5daed8f3dbd84dc5b120e29482", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused4", - "source_mapping": { - "start": 106, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused4 (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#7) is never used in B (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#11-16)\n", - "markdown": "[A.unused4](tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L7) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L7", - "id": "562d3e6a04f6f6068c3e4f0c074ecdbcff87929e43ec6fbeb6c088e715f63cf2", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused2", - "source_mapping": { - "start": 64, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused2 (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#5) is never used in B (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#11-16)\n", - "markdown": "[A.unused2](tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L5) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L5", - "id": "886250d01813743573f3d311b742e0f818e0012ccbf8ad97738c029fd129d870", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused3", - "source_mapping": { - "start": 85, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused3 (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#6) is never used in B (tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#11-16)\n", - "markdown": "[A.unused3](tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L6) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.4.25/unused_state.sol#L6", - "id": "e2ac51590509d97ff791ce50d9a711fc5ad01c20d23eacf6fb31939bd91b9f48", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol.0.5.16.UnusedStateVars.json b/tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol.0.5.16.UnusedStateVars.json deleted file mode 100644 index eed961d11..000000000 --- a/tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol.0.5.16.UnusedStateVars.json +++ /dev/null @@ -1,304 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "unused", - "source_mapping": { - "start": 44, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#4) is never used in B (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#11-16)\n", - "markdown": "[A.unused](tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L4) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L4", - "id": "195279490862ae355bac3d27d0cdb1aa18200a5daed8f3dbd84dc5b120e29482", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused4", - "source_mapping": { - "start": 106, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused4 (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#7) is never used in B (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#11-16)\n", - "markdown": "[A.unused4](tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L7) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L7", - "id": "562d3e6a04f6f6068c3e4f0c074ecdbcff87929e43ec6fbeb6c088e715f63cf2", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused2", - "source_mapping": { - "start": 64, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused2 (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#5) is never used in B (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#11-16)\n", - "markdown": "[A.unused2](tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L5) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L5", - "id": "886250d01813743573f3d311b742e0f818e0012ccbf8ad97738c029fd129d870", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused3", - "source_mapping": { - "start": 85, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused3 (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#6) is never used in B (tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#11-16)\n", - "markdown": "[A.unused3](tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L6) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.5.16/unused_state.sol#L6", - "id": "e2ac51590509d97ff791ce50d9a711fc5ad01c20d23eacf6fb31939bd91b9f48", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol.0.6.11.UnusedStateVars.json b/tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol.0.6.11.UnusedStateVars.json deleted file mode 100644 index 90126296b..000000000 --- a/tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol.0.6.11.UnusedStateVars.json +++ /dev/null @@ -1,304 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "unused", - "source_mapping": { - "start": 44, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#4) is never used in B (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#11-16)\n", - "markdown": "[A.unused](tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L4) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L4", - "id": "195279490862ae355bac3d27d0cdb1aa18200a5daed8f3dbd84dc5b120e29482", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused4", - "source_mapping": { - "start": 106, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused4 (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#7) is never used in B (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#11-16)\n", - "markdown": "[A.unused4](tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L7) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L7", - "id": "562d3e6a04f6f6068c3e4f0c074ecdbcff87929e43ec6fbeb6c088e715f63cf2", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused2", - "source_mapping": { - "start": 64, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused2 (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#5) is never used in B (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#11-16)\n", - "markdown": "[A.unused2](tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L5) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L5", - "id": "886250d01813743573f3d311b742e0f818e0012ccbf8ad97738c029fd129d870", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused3", - "source_mapping": { - "start": 85, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused3 (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#6) is never used in B (tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#11-16)\n", - "markdown": "[A.unused3](tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L6) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.6.11/unused_state.sol#L6", - "id": "e2ac51590509d97ff791ce50d9a711fc5ad01c20d23eacf6fb31939bd91b9f48", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol.0.7.6.UnusedStateVars.json b/tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol.0.7.6.UnusedStateVars.json deleted file mode 100644 index f959460a9..000000000 --- a/tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol.0.7.6.UnusedStateVars.json +++ /dev/null @@ -1,304 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "unused", - "source_mapping": { - "start": 44, - "length": 14, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 5, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#4) is never used in B (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#11-16)\n", - "markdown": "[A.unused](tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L4) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L4", - "id": "195279490862ae355bac3d27d0cdb1aa18200a5daed8f3dbd84dc5b120e29482", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused4", - "source_mapping": { - "start": 106, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 7 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused4 (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#7) is never used in B (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#11-16)\n", - "markdown": "[A.unused4](tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L7) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L7", - "id": "562d3e6a04f6f6068c3e4f0c074ecdbcff87929e43ec6fbeb6c088e715f63cf2", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused2", - "source_mapping": { - "start": 64, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused2 (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#5) is never used in B (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#11-16)\n", - "markdown": "[A.unused2](tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L5) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L5", - "id": "886250d01813743573f3d311b742e0f818e0012ccbf8ad97738c029fd129d870", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "unused3", - "source_mapping": { - "start": 85, - "length": 15, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 5, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "A", - "source_mapping": { - "start": 28, - "length": 114, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "contract", - "name": "B", - "source_mapping": { - "start": 144, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13, - 14, - 15, - 16 - ], - "starting_column": 1, - "ending_column": 2 - } - } - ], - "description": "A.unused3 (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#6) is never used in B (tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#11-16)\n", - "markdown": "[A.unused3](tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L6) is never used in [B](tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L11-L16)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/unused-state/0.7.6/unused_state.sol#L6", - "id": "e2ac51590509d97ff791ce50d9a711fc5ad01c20d23eacf6fb31939bd91b9f48", - "check": "unused-state", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/var-read-using-this/0.4.25/var_read_using_this.sol.0.4.25.VarReadUsingThis.json b/tests/e2e/detectors/test_data/var-read-using-this/0.4.25/var_read_using_this.sol.0.4.25.VarReadUsingThis.json deleted file mode 100644 index 5825bcacc..000000000 --- a/tests/e2e/detectors/test_data/var-read-using-this/0.4.25/var_read_using_this.sol.0.4.25.VarReadUsingThis.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - [] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol.0.5.16.VarReadUsingThis.json b/tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol.0.5.16.VarReadUsingThis.json deleted file mode 100644 index bef851b5e..000000000 --- a/tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol.0.5.16.VarReadUsingThis.json +++ /dev/null @@ -1,736 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 275, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1107, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "this.erc20() == address(0)", - "source_mapping": { - "start": 331, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 13, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 275, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1107, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad3() (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#11-13) reads this.erc20() == address(0) (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#12) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad3()](tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L11-L13) reads [this.erc20() == address(0)](tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L12) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L11-L13", - "id": "55503790711e79d47b5a41729e9de26ce1fda4ab9c0935699a14cc107501842f", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 379, - "length": 138, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1107, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - }, - { - "type": "node", - "name": "local = this.erc20()", - "source_mapping": { - "start": 471, - "length": 28, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 13, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 379, - "length": 138, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1107, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad4() (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#14-18) reads local = this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#16) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad4()](tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L14-L18) reads [local = this.erc20()](tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L16) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L14-L18", - "id": "7e28633dee0a5338ebf7ccf52d467d96e66822051333ac4bc66de407ff56f3bd", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 102, - "length": 85, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1107, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - }, - { - "type": "node", - "name": "this.myMap(x)", - "source_mapping": { - "start": 160, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 102, - "length": 85, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1107, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad1(uint256) (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#5-7) reads this.myMap(x) (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#6) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad1(uint256)](tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L5-L7) reads [this.myMap(x)](tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L6) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L5-L7", - "id": "c5f735934f6390e4bb9ceae821df4ef6b509dde6dead3cea64f3db09508d6029", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 192, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1107, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "this.erc20()", - "source_mapping": { - "start": 244, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 192, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1107, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad2() (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#8-10) reads this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#9) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad2()](tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L8-L10) reads [this.erc20()](tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L9) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.5.16/var_read_using_this.sol#L8-L10", - "id": "e77df2d273271c1f2dea4480d2958fd432f725463ff933493542ccdff84987b5", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol.0.6.11.VarReadUsingThis.json b/tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol.0.6.11.VarReadUsingThis.json deleted file mode 100644 index 0a879704d..000000000 --- a/tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol.0.6.11.VarReadUsingThis.json +++ /dev/null @@ -1,736 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 192, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "this.erc20()", - "source_mapping": { - "start": 244, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 192, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad2() (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#8-10) reads this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#9) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad2()](tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L8-L10) reads [this.erc20()](tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L9) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L8-L10", - "id": "9a65c3b63270657dc2c8cccb6e65b1b2a2c1f662b3d82969b258adf63430f46c", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 102, - "length": 85, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - }, - { - "type": "node", - "name": "this.myMap(x)", - "source_mapping": { - "start": 160, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 102, - "length": 85, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad1(uint256) (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#5-7) reads this.myMap(x) (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#6) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad1(uint256)](tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L5-L7) reads [this.myMap(x)](tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L6) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L5-L7", - "id": "d6aadc6c5e0b16141411ad82b627e660be61fe615802a6fba82fb0680d8ec677", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 275, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "this.erc20() == address(0)", - "source_mapping": { - "start": 331, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 13, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 275, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad3() (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#11-13) reads this.erc20() == address(0) (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#12) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad3()](tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L11-L13) reads [this.erc20() == address(0)](tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L12) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L11-L13", - "id": "ee3598271c55ef81ce5bb5797f41fe975de5f5a14728b4fb87fed3477f01c238", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 379, - "length": 138, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - }, - { - "type": "node", - "name": "local = this.erc20()", - "source_mapping": { - "start": 471, - "length": 28, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 13, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 379, - "length": 138, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad4() (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#14-18) reads local = this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#16) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad4()](tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L14-L18) reads [local = this.erc20()](tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L16) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.6.11/var_read_using_this.sol#L14-L18", - "id": "fca8c2dd2139fad566cfbd2302ebbeabd3e18380a3969fe5bca5128234bcfef2", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol.0.7.6.VarReadUsingThis.json b/tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol.0.7.6.VarReadUsingThis.json deleted file mode 100644 index 9b34e90d3..000000000 --- a/tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol.0.7.6.VarReadUsingThis.json +++ /dev/null @@ -1,736 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 192, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "this.erc20()", - "source_mapping": { - "start": 244, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 192, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad2() (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#8-10) reads this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#9) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad2()](tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L8-L10) reads [this.erc20()](tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L9) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L8-L10", - "id": "290598228553ac4edab639bddf2d53828b34be8d1042a2b4a6d123204d496f35", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 379, - "length": 138, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - }, - { - "type": "node", - "name": "local = this.erc20()", - "source_mapping": { - "start": 471, - "length": 28, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 13, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 379, - "length": 138, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad4() (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#14-18) reads local = this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#16) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad4()](tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L14-L18) reads [local = this.erc20()](tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L16) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L14-L18", - "id": "30a0f3b46a9e9a90b039eb227e2718a281380de9a1e9af5dc185d56cfd66a2c7", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 102, - "length": 85, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - }, - { - "type": "node", - "name": "this.myMap(x)", - "source_mapping": { - "start": 160, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 102, - "length": 85, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad1(uint256) (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#5-7) reads this.myMap(x) (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#6) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad1(uint256)](tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L5-L7) reads [this.myMap(x)](tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L6) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L5-L7", - "id": "b256cea47af4d3cd37395d1a733b696008854142bbde559be84d26bd9762ee94", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 275, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "this.erc20() == address(0)", - "source_mapping": { - "start": 331, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 13, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 275, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad3() (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#11-13) reads this.erc20() == address(0) (tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#12) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad3()](tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L11-L13) reads [this.erc20() == address(0)](tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L12) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.7.6/var_read_using_this.sol#L11-L13", - "id": "f08a064b6849275d93e7950958053cc779230d9ed5aa56c2e0ee64bc42a64a18", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol.0.8.15.VarReadUsingThis.json b/tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol.0.8.15.VarReadUsingThis.json deleted file mode 100644 index f5cbbe0d7..000000000 --- a/tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol.0.8.15.VarReadUsingThis.json +++ /dev/null @@ -1,736 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 192, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "this.erc20()", - "source_mapping": { - "start": 244, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 192, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad2() (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#8-10) reads this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#9) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad2()](tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L8-L10) reads [this.erc20()](tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L9) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L8-L10", - "id": "40ec22aa539127c7cb3bc7631b7f92ebbfc062ff2d9c0df1f1939c5560d446ca", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 102, - "length": 85, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - }, - { - "type": "node", - "name": "this.myMap(x)", - "source_mapping": { - "start": 160, - "length": 20, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 6 - ], - "starting_column": 9, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 102, - "length": 85, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 5, - 6, - 7 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1(uint256)" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad1(uint256) (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#5-7) reads this.myMap(x) (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#6) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad1(uint256)](tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L5-L7) reads [this.myMap(x)](tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L6) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L5-L7", - "id": "be52068edd166c8df6487c7731a41ae63028b53837808ab34cfc7ed8f7f0e25a", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 379, - "length": 138, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - }, - { - "type": "node", - "name": "local = this.erc20()", - "source_mapping": { - "start": 471, - "length": 28, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 16 - ], - "starting_column": 13, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad4", - "source_mapping": { - "start": 379, - "length": 138, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 14, - 15, - 16, - 17, - 18 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad4()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad4() (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#14-18) reads local = this.erc20() (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#16) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad4()](tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L14-L18) reads [local = this.erc20()](tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L16) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L14-L18", - "id": "ebe2972f34a0dab794de30abdcaa715345347d50e045220e34b6fe186b3116e9", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 275, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "this.erc20() == address(0)", - "source_mapping": { - "start": 331, - "length": 26, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 12 - ], - "starting_column": 13, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 275, - "length": 99, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 11, - 12, - 13 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VarReadUsingThis", - "source_mapping": { - "start": 1, - "length": 1103, - "filename_relative": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "The function VarReadUsingThis.bad3() (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#11-13) reads this.erc20() == address(0) (tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#12) with `this` which adds an extra STATICCALL.\n", - "markdown": "The function [VarReadUsingThis.bad3()](tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L11-L13) reads [this.erc20() == address(0)](tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L12) with `this` which adds an extra STATICCALL.\n", - "first_markdown_element": "tests/e2e/detectors/test_data/var-read-using-this/0.8.15/var_read_using_this.sol#L11-L13", - "id": "faca8090dd3c1760f275353c90f014075eae7ad4ee5cd3559ef7219cd842bb1f", - "check": "var-read-using-this", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol.0.4.25.PredeclarationUsageLocal.json b/tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol.0.4.25.PredeclarationUsageLocal.json deleted file mode 100644 index 6950dcb48..000000000 --- a/tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol.0.4.25.PredeclarationUsageLocal.json +++ /dev/null @@ -1,1299 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "i", - "source_mapping": { - "start": 199, - "length": 11, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 18, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - }, - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - }, - { - "type": "node", - "name": "i --", - "source_mapping": { - "start": 417, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 29, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - } - ], - "description": "Variable 'C.f(uint256).i (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#8)' in C.f(uint256) (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#2-17) potentially used before declaration: i -- (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#14)\n", - "markdown": "Variable '[C.f(uint256).i](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L8)' in [C.f(uint256)](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L2-L17) potentially used before declaration: [i --](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L8", - "id": "095c11e8610be17375a514b274a990111f6eecade86dcfb496e9f37928e897d6", - "check": "variable-scope", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "i", - "source_mapping": { - "start": 199, - "length": 11, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 18, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - }, - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - }, - { - "type": "node", - "name": "x += i", - "source_mapping": { - "start": 436, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 15 - ], - "starting_column": 13, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - } - ], - "description": "Variable 'C.f(uint256).i (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#8)' in C.f(uint256) (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#2-17) potentially used before declaration: x += i (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#15)\n", - "markdown": "Variable '[C.f(uint256).i](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L8)' in [C.f(uint256)](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L2-L17) potentially used before declaration: [x += i](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L15)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L8", - "id": "1fd0e708c176441472d554bac03777d3bbefc96772c8f5d2cbf0ce9a8bbfb96a", - "check": "variable-scope", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "i", - "source_mapping": { - "start": 199, - "length": 11, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 18, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - }, - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - }, - { - "type": "node", - "name": "i > 0", - "source_mapping": { - "start": 410, - "length": 5, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 22, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - } - ], - "description": "Variable 'C.f(uint256).i (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#8)' in C.f(uint256) (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#2-17) potentially used before declaration: i > 0 (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#14)\n", - "markdown": "Variable '[C.f(uint256).i](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L8)' in [C.f(uint256)](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L2-L17) potentially used before declaration: [i > 0](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L8", - "id": "5488c1057b2ea266ea7471dff81dfc1b833e117af14dd80fbc2ec6b895c042f8", - "check": "variable-scope", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "i", - "source_mapping": { - "start": 199, - "length": 11, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 8 - ], - "starting_column": 18, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - }, - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - }, - { - "type": "node", - "name": "i = 10", - "source_mapping": { - "start": 402, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 14 - ], - "starting_column": 14, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - } - ], - "description": "Variable 'C.f(uint256).i (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#8)' in C.f(uint256) (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#2-17) potentially used before declaration: i = 10 (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#14)\n", - "markdown": "Variable '[C.f(uint256).i](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L8)' in [C.f(uint256)](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L2-L17) potentially used before declaration: [i = 10](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L14)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L8", - "id": "7a8e31247c347e66766a188c2b474c43e42d7ae3d848eee491b448b7f006ec45", - "check": "variable-scope", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "x", - "source_mapping": { - "start": 130, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 9, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - }, - { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - }, - { - "type": "node", - "name": "y = x + 9 + z", - "source_mapping": { - "start": 69, - "length": 13, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 4 - ], - "starting_column": 9, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "f", - "source_mapping": { - "start": 17, - "length": 442, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "C", - "source_mapping": { - "start": 0, - "length": 461, - "filename_relative": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "f(uint256)" - } - } - } - } - ], - "description": "Variable 'C.f(uint256).x (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#5)' in C.f(uint256) (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#2-17) potentially used before declaration: y = x + 9 + z (tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#4)\n", - "markdown": "Variable '[C.f(uint256).x](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L5)' in [C.f(uint256)](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L2-L17) potentially used before declaration: [y = x + 9 + z](tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L4)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/variable-scope/0.4.25/predeclaration_usage_local.sol#L5", - "id": "94c4c9c10924861806ab710b2985af6bf804e7a4be0e53e9faebe25b48d94c12", - "check": "variable-scope", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol.0.4.25.VoidConstructor.json b/tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol.0.4.25.VoidConstructor.json deleted file mode 100644 index d1a086fb3..000000000 --- a/tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol.0.4.25.VoidConstructor.json +++ /dev/null @@ -1,124 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 41, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 19, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - }, - { - "type": "node", - "name": "C()", - "source_mapping": { - "start": 62, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 26, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 41, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 19, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Void constructor called in D.constructor() (tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol#10-12):\n\t- C() (tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol#10)\n", - "markdown": "Void constructor called in [D.constructor()](tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol#L10-L12):\n\t- [C()](tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/void-cst/0.4.25/void-cst.sol#L10-L12", - "id": "55ac96fcef936e541b9795169e91e30db40ef05b05579e409099c7c216e50a1e", - "check": "void-cst", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol.0.5.16.VoidConstructor.json b/tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol.0.5.16.VoidConstructor.json deleted file mode 100644 index 7134909b6..000000000 --- a/tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol.0.5.16.VoidConstructor.json +++ /dev/null @@ -1,124 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 41, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 19, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - }, - { - "type": "node", - "name": "C()", - "source_mapping": { - "start": 62, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 26, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 41, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 19, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Void constructor called in D.constructor() (tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol#10-12):\n\t- C() (tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol#10)\n", - "markdown": "Void constructor called in [D.constructor()](tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol#L10-L12):\n\t- [C()](tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/void-cst/0.5.16/void-cst.sol#L10-L12", - "id": "cc95457850d185b1d1b294987dcfbf4d46368435b7b739884040b6e9beff545d", - "check": "void-cst", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol.0.6.11.VoidConstructor.json b/tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol.0.6.11.VoidConstructor.json deleted file mode 100644 index 5504c2332..000000000 --- a/tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol.0.6.11.VoidConstructor.json +++ /dev/null @@ -1,124 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 41, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 19, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - }, - { - "type": "node", - "name": "C()", - "source_mapping": { - "start": 62, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 26, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 41, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 19, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Void constructor called in D.constructor() (tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol#10-12):\n\t- C() (tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol#10)\n", - "markdown": "Void constructor called in [D.constructor()](tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol#L10-L12):\n\t- [C()](tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/void-cst/0.6.11/void-cst.sol#L10-L12", - "id": "73a68bb3efac669142fd13cd60fb44891b45e1a85791aefe5191e8c751b5469f", - "check": "void-cst", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol.0.7.6.VoidConstructor.json b/tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol.0.7.6.VoidConstructor.json deleted file mode 100644 index 0096a9256..000000000 --- a/tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol.0.7.6.VoidConstructor.json +++ /dev/null @@ -1,124 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 41, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 19, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - }, - { - "type": "node", - "name": "C()", - "source_mapping": { - "start": 62, - "length": 3, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 26, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 41, - "length": 32, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol", - "is_dependency": false, - "lines": [ - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "D", - "source_mapping": { - "start": 19, - "length": 57, - "filename_relative": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor()" - } - } - } - } - ], - "description": "Void constructor called in D.constructor() (tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol#10-12):\n\t- C() (tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol#10)\n", - "markdown": "Void constructor called in [D.constructor()](tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol#L10-L12):\n\t- [C()](tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol#L10)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/void-cst/0.7.6/void-cst.sol#L10-L12", - "id": "7ae5f294c43db6bc7621197cb8a85bfa9f2fc2d96c5534b80f5e3de95ffa6706", - "check": "void-cst", - "impact": "Low", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol.0.4.25.BadPRNG.json b/tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol.0.4.25.BadPRNG.json deleted file mode 100644 index 0c508dbc9..000000000 --- a/tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol.0.4.25.BadPRNG.json +++ /dev/null @@ -1,644 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 122, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "i = now % 10", - "source_mapping": { - "start": 154, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 7, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 122, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "BadPRNG.bad1() (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#8-10) uses a weak PRNG: \"i = now % 10 (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#9)\" \n", - "markdown": "[BadPRNG.bad1()](tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L8-L10) uses a weak PRNG: \"[i = now % 10](tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L9)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L8-L10", - "id": "143f5f0813a8024fe87180dc965da233f389d77a41bad7b937acde2f5555e13e", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 184, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "i = uint256(blockhash(uint256)(10000)) % 10", - "source_mapping": { - "start": 216, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 7, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 184, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "BadPRNG.bad2() (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#12-14) uses a weak PRNG: \"i = uint256(blockhash(uint256)(10000)) % 10 (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#13)\" \n", - "markdown": "[BadPRNG.bad2()](tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L12-L14) uses a weak PRNG: \"[i = uint256(blockhash(uint256)(10000)) % 10](tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L13)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L12-L14", - "id": "a48a54481e1fc0db4bca891f0c3f22b29bf26ced0d0b8431d888967c3263b264", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 363, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "i = foo() % 10", - "source_mapping": { - "start": 395, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 7, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 363, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "BadPRNG.bad3() (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#20-22) uses a weak PRNG: \"i = foo() % 10 (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#21)\" \n", - "markdown": "[BadPRNG.bad3()](tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L20-L22) uses a weak PRNG: \"[i = foo() % 10](tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L21)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L20-L22", - "id": "cac2fa07af6b5b7ea3532b6c1b1e1d260037c40b731fcc45a75f206d6a648652", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 45, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "i = block.timestamp % 10", - "source_mapping": { - "start": 77, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 7, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 45, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "BadPRNG.bad0() (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#4-6) uses a weak PRNG: \"i = block.timestamp % 10 (tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#5)\" \n", - "markdown": "[BadPRNG.bad0()](tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L4-L6) uses a weak PRNG: \"[i = block.timestamp % 10](tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L5)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.4.25/bad_prng.sol#L4-L6", - "id": "d5ccd15b3c621af3f73362f44b9d4d23def15db653ce33b361a644434be9602c", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol.0.5.16.BadPRNG.json b/tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol.0.5.16.BadPRNG.json deleted file mode 100644 index e999af5f9..000000000 --- a/tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol.0.5.16.BadPRNG.json +++ /dev/null @@ -1,644 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 122, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "i = now % 10", - "source_mapping": { - "start": 154, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 7, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 122, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "BadPRNG.bad1() (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#8-10) uses a weak PRNG: \"i = now % 10 (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#9)\" \n", - "markdown": "[BadPRNG.bad1()](tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L8-L10) uses a weak PRNG: \"[i = now % 10](tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L9)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L8-L10", - "id": "3c7be6367f5be15ead00dfbcfc2022fdb73817e5f935c6015ba4fc807b505f69", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 45, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "i = block.timestamp % 10", - "source_mapping": { - "start": 77, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 7, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 45, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "BadPRNG.bad0() (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#4-6) uses a weak PRNG: \"i = block.timestamp % 10 (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#5)\" \n", - "markdown": "[BadPRNG.bad0()](tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L4-L6) uses a weak PRNG: \"[i = block.timestamp % 10](tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L5)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L4-L6", - "id": "be9b456f0a8ae7cb5bbc52eae709817707238cc2316533b72ac707cb3228316f", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 184, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "i = uint256(blockhash(uint256)(10000)) % 10", - "source_mapping": { - "start": 216, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 7, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 184, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "BadPRNG.bad2() (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#12-14) uses a weak PRNG: \"i = uint256(blockhash(uint256)(10000)) % 10 (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#13)\" \n", - "markdown": "[BadPRNG.bad2()](tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L12-L14) uses a weak PRNG: \"[i = uint256(blockhash(uint256)(10000)) % 10](tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L13)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L12-L14", - "id": "c158977d5022ad3d99288118f7a6f52b52bb33f9977554bd4d0818ff51c9e9c2", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 363, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "i = foo() % 10", - "source_mapping": { - "start": 395, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 7, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 363, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "BadPRNG.bad3() (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#20-22) uses a weak PRNG: \"i = foo() % 10 (tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#21)\" \n", - "markdown": "[BadPRNG.bad3()](tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L20-L22) uses a weak PRNG: \"[i = foo() % 10](tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L21)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.5.16/bad_prng.sol#L20-L22", - "id": "fd288ed50722fc401dd1618df6351f671367dfd03eb5640ebf32022c2c7616a6", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol.0.6.11.BadPRNG.json b/tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol.0.6.11.BadPRNG.json deleted file mode 100644 index 8c7a1f4ca..000000000 --- a/tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol.0.6.11.BadPRNG.json +++ /dev/null @@ -1,644 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 122, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "i = now % 10", - "source_mapping": { - "start": 154, - "length": 17, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 7, - "ending_column": 24 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 122, - "length": 56, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "BadPRNG.bad1() (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#8-10) uses a weak PRNG: \"i = now % 10 (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#9)\" \n", - "markdown": "[BadPRNG.bad1()](tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L8-L10) uses a weak PRNG: \"[i = now % 10](tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L9)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L8-L10", - "id": "00229cc63ae06a1fdb0d8046a4e7c0ade397b309659a2b597399a3663985b25a", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 45, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "i = block.timestamp % 10", - "source_mapping": { - "start": 77, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 7, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 45, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "BadPRNG.bad0() (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#4-6) uses a weak PRNG: \"i = block.timestamp % 10 (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#5)\" \n", - "markdown": "[BadPRNG.bad0()](tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L4-L6) uses a weak PRNG: \"[i = block.timestamp % 10](tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L5)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L4-L6", - "id": "075aa1de6fc21238aeeaffdfbae1b4361021f8a6c476b422e40a4cabfc337ae4", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 184, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "i = uint256(blockhash(uint256)(10000)) % 10", - "source_mapping": { - "start": 216, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 7, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 184, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "BadPRNG.bad2() (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#12-14) uses a weak PRNG: \"i = uint256(blockhash(uint256)(10000)) % 10 (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#13)\" \n", - "markdown": "[BadPRNG.bad2()](tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L12-L14) uses a weak PRNG: \"[i = uint256(blockhash(uint256)(10000)) % 10](tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L13)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L12-L14", - "id": "0f2caf1275a0fff75dc984176de06ea8ffade337f7d54176a7902cc77fad2333", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 363, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "i = foo() % 10", - "source_mapping": { - "start": 395, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 7, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 363, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 499, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "BadPRNG.bad3() (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#20-22) uses a weak PRNG: \"i = foo() % 10 (tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#21)\" \n", - "markdown": "[BadPRNG.bad3()](tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L20-L22) uses a weak PRNG: \"[i = foo() % 10](tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L21)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.6.11/bad_prng.sol#L20-L22", - "id": "5af8366c76386b6e2acdad51dfcbbd64226e53e7b4decab2acd11a9ce5b4ba3c", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol.0.7.6.BadPRNG.json b/tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol.0.7.6.BadPRNG.json deleted file mode 100644 index 3b85badb2..000000000 --- a/tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol.0.7.6.BadPRNG.json +++ /dev/null @@ -1,644 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 375, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 511, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - }, - { - "type": "node", - "name": "i = foo() % 10", - "source_mapping": { - "start": 407, - "length": 19, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 7, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad3", - "source_mapping": { - "start": 375, - "length": 58, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 511, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad3()" - } - } - } - } - ], - "description": "BadPRNG.bad3() (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#20-22) uses a weak PRNG: \"i = foo() % 10 (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#21)\" \n", - "markdown": "[BadPRNG.bad3()](tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L20-L22) uses a weak PRNG: \"[i = foo() % 10](tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L21)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L20-L22", - "id": "07d06861c819615e4db8b0e5dad920b32ffd6264b7e167fbeb3c832d26970b33", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 196, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 511, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - }, - { - "type": "node", - "name": "i = uint256(blockhash(uint256)(10000)) % 10", - "source_mapping": { - "start": 228, - "length": 39, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 13 - ], - "starting_column": 7, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad2", - "source_mapping": { - "start": 196, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 12, - 13, - 14 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 511, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad2()" - } - } - } - } - ], - "description": "BadPRNG.bad2() (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#12-14) uses a weak PRNG: \"i = uint256(blockhash(uint256)(10000)) % 10 (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#13)\" \n", - "markdown": "[BadPRNG.bad2()](tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L12-L14) uses a weak PRNG: \"[i = uint256(blockhash(uint256)(10000)) % 10](tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L13)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L12-L14", - "id": "235a90165fd614c1665cc0f21365b3be51c00c850e4023e6fb490073335e9799", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 122, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 511, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - }, - { - "type": "node", - "name": "i = block.timestamp % 10", - "source_mapping": { - "start": 154, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 9 - ], - "starting_column": 7, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad1", - "source_mapping": { - "start": 122, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 8, - 9, - 10 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 511, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad1()" - } - } - } - } - ], - "description": "BadPRNG.bad1() (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#8-10) uses a weak PRNG: \"i = block.timestamp % 10 (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#9)\" \n", - "markdown": "[BadPRNG.bad1()](tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L8-L10) uses a weak PRNG: \"[i = block.timestamp % 10](tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L9)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L8-L10", - "id": "5b78d3756b66561562fbf9c19a39c7083e422f1e0404a7635e01aed584636221", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 45, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 511, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - }, - { - "type": "node", - "name": "i = block.timestamp % 10", - "source_mapping": { - "start": 77, - "length": 29, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 5 - ], - "starting_column": 7, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bad0", - "source_mapping": { - "start": 45, - "length": 68, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 4, - 5, - 6 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BadPRNG", - "source_mapping": { - "start": 0, - "length": 511, - "filename_relative": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bad0()" - } - } - } - } - ], - "description": "BadPRNG.bad0() (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#4-6) uses a weak PRNG: \"i = block.timestamp % 10 (tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#5)\" \n", - "markdown": "[BadPRNG.bad0()](tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L4-L6) uses a weak PRNG: \"[i = block.timestamp % 10](tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L5)\" \n", - "first_markdown_element": "tests/e2e/detectors/test_data/weak-prng/0.7.6/bad_prng.sol#L4-L6", - "id": "998e1c79a2cdbd1e2ff7c3faf1546c5fdf0bf9095f49e7fc9dd1fa4f6d673dac", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol.0.8.0.WriteAfterWrite.json b/tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol.0.8.0.WriteAfterWrite.json deleted file mode 100644 index 9a08b581f..000000000 --- a/tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol.0.8.0.WriteAfterWrite.json +++ /dev/null @@ -1,1070 +0,0 @@ -[ - [ - { - "elements": [ - { - "type": "variable", - "name": "state", - "source_mapping": { - "start": 20, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 3 - ], - "starting_column": 5, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 992, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - } - } - }, - { - "type": "node", - "name": "state = 10", - "source_mapping": { - "start": 157, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 10 - ], - "starting_column": 9, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "buggy_state", - "source_mapping": { - "start": 116, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 992, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "buggy_state()" - } - } - } - }, - { - "type": "node", - "name": "state = 20", - "source_mapping": { - "start": 177, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 11 - ], - "starting_column": 9, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "buggy_state", - "source_mapping": { - "start": 116, - "length": 78, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 9, - 10, - 11, - 12 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 992, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "buggy_state()" - } - } - } - } - ], - "description": "Test.state (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#3) is written in both\n\tstate = 10 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#10)\n\tstate = 20 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#11)\n", - "markdown": "[Test.state](tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L3) is written in both\n\t[state = 10](tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L10)\n\t[state = 20](tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L11)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L3", - "id": "ac5839f78b0995be85eede2862996d38a3a50c70e92668462f31fadce02f081e", - "check": "write-after-write", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "local", - "source_mapping": { - "start": 894, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 52 - ], - "starting_column": 9, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bugy_external_local", - "source_mapping": { - "start": 845, - "length": 145, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 992, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bugy_external_local()" - } - } - } - }, - { - "type": "node", - "name": "local = 10", - "source_mapping": { - "start": 914, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 53 - ], - "starting_column": 9, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bugy_external_local", - "source_mapping": { - "start": 845, - "length": 145, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 992, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bugy_external_local()" - } - } - } - }, - { - "type": "node", - "name": "local = 11", - "source_mapping": { - "start": 973, - "length": 10, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 56 - ], - "starting_column": 9, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "bugy_external_local", - "source_mapping": { - "start": 845, - "length": 145, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 51, - 52, - 53, - 54, - 55, - 56, - 57 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 992, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "bugy_external_local()" - } - } - } - } - ], - "description": "Test.bugy_external_local().local (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#52) is written in both\n\tlocal = 10 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#53)\n\tlocal = 11 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#56)\n", - "markdown": "[Test.bugy_external_local().local](tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L52) is written in both\n\t[local = 10](tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L53)\n\t[local = 11](tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L56)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L52", - "id": "bbb2aea426252f6fa0c1bb26bc05cdadfa245207b59273fcd3a5afcdaff675ce", - "check": "write-after-write", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "a", - "source_mapping": { - "start": 351, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 21 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "buggy_local", - "source_mapping": { - "start": 310, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 992, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "buggy_local()" - } - } - } - }, - { - "type": "node", - "name": "a = 10", - "source_mapping": { - "start": 367, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 22 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "buggy_local", - "source_mapping": { - "start": 310, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 992, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "buggy_local()" - } - } - } - }, - { - "type": "node", - "name": "a = 20", - "source_mapping": { - "start": 383, - "length": 6, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 23 - ], - "starting_column": 9, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "buggy_local", - "source_mapping": { - "start": 310, - "length": 86, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 20, - 21, - 22, - 23, - 24 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Test", - "source_mapping": { - "start": 0, - "length": 992, - "filename_relative": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "filename_absolute": "/GENERIC_PATH", - "filename_short": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol", - "is_dependency": false, - "lines": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "buggy_local()" - } - } - } - } - ], - "description": "Test.buggy_local().a (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#21) is written in both\n\ta = 10 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#22)\n\ta = 20 (tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#23)\n", - "markdown": "[Test.buggy_local().a](tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L21) is written in both\n\t[a = 10](tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L22)\n\t[a = 20](tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L23)\n", - "first_markdown_element": "tests/e2e/detectors/test_data/write-after-write/0.8.0/write-after-write.sol#L21", - "id": "f676e1dedd369680cb4b83867fa0f2bc5ff5e9d7f9e089fcbb31a824c77e2bb8", - "check": "write-after-write", - "impact": "Medium", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/test_detectors.py b/tests/e2e/detectors/test_detectors.py index 0e3185eef..26ea93743 100644 --- a/tests/e2e/detectors/test_detectors.py +++ b/tests/e2e/detectors/test_detectors.py @@ -2,11 +2,9 @@ import json import os from pathlib import Path import sys -from pprint import pprint from typing import Type, Optional, List import pytest -from deepdiff import DeepDiff # pip install deepdiff from crytic_compile import CryticCompile, save_to_zip from crytic_compile.utils.zip import load_from_zip @@ -1667,12 +1665,9 @@ def test_detector(test_item: Test, snapshot): test_item.solc_ver, ).as_posix() test_file_path = Path(test_dir_path, test_item.test_file).as_posix() - expected_result_path = Path(test_dir_path, test_item.expected_result).absolute().as_posix() zip_artifact_path = Path(f"{test_file_path}-{test_item.solc_ver}.zip").as_posix() crytic_compile = load_from_zip(zip_artifact_path)[0] - # The absolute paths saved in the zip file must be replaced by the generic path - artifact_filenames = crytic_compile.filenames sl = Slither(crytic_compile) sl.register_detector(test_item.detector) @@ -1685,37 +1680,6 @@ def test_detector(test_item: Test, snapshot): actual_output += "\n" assert snapshot() == actual_output - with open(expected_result_path, encoding="utf8") as f: - expected_result = json.load(f) - - results_as_string = json.dumps(results) - - for additional_file in test_item.additional_files: - additional_path = Path(test_dir_path, additional_file).absolute().as_posix() - additional_path = additional_path.replace("\\", "\\\\") - for artifact_filename in artifact_filenames: - results_as_string = results_as_string.replace(artifact_filename.absolute, GENERIC_PATH) - - test_file_path = test_file_path.replace("\\", "\\\\") - for artifact_filename in artifact_filenames: - results_as_string = results_as_string.replace(artifact_filename.absolute, GENERIC_PATH) - results = json.loads(results_as_string) - - diff = DeepDiff(results, expected_result, ignore_order=True, verbose_level=2) - if diff: - pprint(diff) - diff_as_dict = diff.to_dict() - - if "iterable_item_added" in diff_as_dict: - print("#### Findings added") - for finding_added in diff_as_dict["iterable_item_added"].values(): - print(finding_added["description"]) - if "iterable_item_removed" in diff_as_dict: - print("#### Findings removed") - for finding_added in diff_as_dict["iterable_item_removed"].values(): - print(finding_added["description"]) - assert False - def _generate_test(test_item: Test, skip_existing=False): test_dir_path = Path( From da045d6db1d25767ae9658ace6a40e94588da074 Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 4 Apr 2023 12:08:27 -0500 Subject: [PATCH 048/220] Make TaintedExternalContract a regular class and add TaintedFunction and TaintedVariable classes --- slither/utils/upgradeability.py | 182 +++++++++++++++++++++++--------- 1 file changed, 135 insertions(+), 47 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 35921c843..7316b480d 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -1,4 +1,4 @@ -from typing import Optional, Tuple, List, Union, TypedDict +from typing import Optional, Tuple, List, Union from slither.core.declarations import ( Contract, Structure, @@ -17,7 +17,6 @@ from slither.core.solidity_types import ( from slither.core.variables.local_variable import LocalVariable from slither.core.variables.local_variable_init_from_tuple import LocalVariableInitFromTuple from slither.core.variables.state_variable import StateVariable -from slither.slithir.variables import TemporaryVariable from slither.analyses.data_dependency.data_dependency import get_dependencies from slither.core.variables.variable import Variable from slither.core.expressions import ( @@ -64,10 +63,63 @@ from slither.slithir.variables import ( from slither.tools.read_storage.read_storage import SlotInfo, SlitherReadStorage -class TaintedExternalContract(TypedDict): - contract: Contract - functions: List[Function] - variables: List[Variable] +class TaintedFunction: + def __init__(self, f: "Function") -> None: + self._function: Function = f + self._tainted_by: List[Union[Function, StateVariable]] = [] + + @property + def function(self) -> Function: + return self._function + + @property + def tainted_by(self) -> List[Union[Function, StateVariable]]: + return self._tainted_by + + def add_tainted_by(self, f: Union[Function, StateVariable]): + self._tainted_by.append(f) + + +class TaintedVariable: + def __init__(self, v: "StateVariable") -> None: + self._variable: StateVariable = v + self._tainted_by: List[Function] = [] + + @property + def variable(self) -> StateVariable: + return self._variable + + @property + def tainted_by(self) -> List[Function]: + return self._tainted_by + + def add_tainted_by(self, f: Function): + self._tainted_by.append(f) + + +class TaintedExternalContract: + def __init__(self, contract: "Contract") -> None: + self._contract: Contract = contract + self._tainted_functions: List[TaintedFunction] = [] + self._tainted_variables: List[TaintedVariable] = [] + + @property + def contract(self) -> Contract: + return self._contract + + @property + def tainted_functions(self) -> List[TaintedFunction]: + return self._tainted_functions + + def add_tainted_function(self, f: TaintedFunction): + self._tainted_functions.append(f) + + @property + def tainted_variables(self) -> List[TaintedVariable]: + return self._tainted_variables + + def add_tainted_variable(self, v: TaintedVariable): + self._tainted_variables.append(v) # pylint: disable=too-many-locals @@ -128,17 +180,13 @@ def compare( if sig not in func_sigs1: new_modified_functions.append(function) new_functions.append(function) - new_modified_function_vars += ( - function.all_state_variables_written() - ) + new_modified_function_vars += function.all_state_variables_written() elif not function.is_constructor_variables and is_function_modified( orig_function, function ): new_modified_functions.append(function) modified_functions.append(function) - new_modified_function_vars += ( - function.all_state_variables_written() - ) + new_modified_function_vars += function.all_state_variables_written() # Find all unmodified functions that call a modified function or read/write the # same state variable(s) as a new/modified function, i.e., tainted functions @@ -213,41 +261,52 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon if contract.is_library: continue if contract.name not in tainted_contracts: - tainted_contracts[contract.name] = TaintedExternalContract( - contract=contract, functions=[], variables=[] - ) + tainted_contracts[contract.name] = TaintedExternalContract(contract) if ( isinstance(target, Function) and target not in funcs - and target not in tainted_contracts[contract.name]["functions"] + and target + not in (f.function for f in tainted_contracts[contract.name].tainted_functions) and not (target.is_constructor or target.is_fallback or target.is_receive) ): - tainted_contracts[contract.name]["functions"].append(target) + tainted_function = TaintedFunction(target) + tainted_function.add_tainted_by(func) + tainted_contracts[contract.name].add_tainted_function(tainted_function) for var in target.all_state_variables_written(): - if var not in tainted_contracts[contract.name]["variables"]: - tainted_contracts[contract.name]["variables"].append(var) + if var not in ( + v.variable for v in tainted_contracts[contract.name].tainted_variables + ): + tainted_var = TaintedVariable(var) + tainted_var.add_tainted_by(target) + tainted_contracts[contract.name].add_tainted_variable(tainted_var) elif ( - isinstance(target, Variable) - and target not in tainted_contracts[contract.name]["variables"] + isinstance(target, StateVariable) + and target + not in (v.variable for v in tainted_contracts[contract.name].tainted_variables) and not (target.is_constant or target.is_immutable) ): + tainted_var = TaintedVariable(target) + tainted_var.add_tainted_by(func) tainted_contracts[contract.name]["variables"].append(target) - for c in tainted_contracts.items(): - if len(c[1]["functions"]) == 0 and len(c[1]["variables"]) == 0: - continue - tainted_list.append(c[1]) - contract = c[1]["contract"] - variables = c[1]["variables"] + for c in tainted_contracts.values(): + # if len(c.tainted_functions) == 0 and len(c.tainted_variables) == 0: + # continue + tainted_list.append(c) + contract = c.contract + variables = c.tainted_variables for var in variables: + var = var.variable read_write = set( contract.get_functions_reading_from_variable(var) + contract.get_functions_writing_to_variable(var) ) for f in read_write: - if f not in tainted_contracts[contract.name]["functions"] and not ( - f.is_constructor or f.is_fallback or f.is_receive - ): - tainted_contracts[contract.name]["functions"].append(f) + if f not in ( + t.function for t in tainted_contracts[contract.name].tainted_functions + ) and not (f.is_constructor or f.is_fallback or f.is_receive): + tainted_func = TaintedFunction(f) + tainted_func.add_tainted_by(var) + c.add_tainted_function(tainted_func) return tainted_list @@ -267,41 +326,70 @@ def tainted_inheriting_contracts( An updated list of TaintedExternalContract, including all from the input list. """ for tainted in tainted_contracts: - contract = tainted["contract"] + contract = tainted.contract if contracts is None: contracts = contract.compilation_unit.contracts contracts = [ c for c in contracts - if c.name not in tainted_contracts and c.name in [i.name for i in c.inheritance] + if c.name not in [t.contract.name for t in tainted_contracts] + and c.name in [i.name for i in c.inheritance] ] for c in contracts: - new_taint = TaintedExternalContract(contract=c, functions=[], variables=[]) + new_taint = TaintedExternalContract(c) for f in c.functions_declared: internal_calls = f.all_internal_calls() if any( - str(call) == str(t) for t in tainted["functions"] for call in internal_calls + call == t.function for t in tainted.tainted_functions for call in internal_calls ) or any( - str(var) == str(t) - for t in tainted["variables"] + var == t.variable + for t in tainted.tainted_variables for var in f.all_state_variables_read() + f.all_state_variables_written() ): - new_taint["functions"].append(f) - for f in new_taint["functions"]: + tainted_func = TaintedFunction(f) + tainted_by = next( + ( + t.function + for t in tainted.tainted_functions + for call in internal_calls + if str(call) == str(t.function) + ), + next( + ( + t.variable + for t in tainted.tainted_variables + for var in f.all_state_variables_read() + + f.all_state_variables_written() + if var == t.variable + ), + None, + ), + ) + tainted_func.add_tainted_by(tainted_by) + new_taint.add_tainted_function(tainted_func) + for f in new_taint.tainted_functions: + f = f.function for var in f.all_state_variables_read() + f.all_state_variables_written(): - if not (var in tainted["variables"] or var in new_taint["variables"]): - new_taint["variables"].append(var) - for var in new_taint["variables"]: + if var not in ( + v.variable for v in tainted.tainted_variables + new_taint.tainted_variables + ): + tainted_var = TaintedVariable(var) + tainted_var.add_tainted_by(f) + new_taint.add_tainted_variable(tainted_var) + for var in new_taint.tainted_variables: + var = var.variable read_write = set( contract.get_functions_reading_from_variable(var) + contract.get_functions_writing_to_variable(var) ) for f in read_write: - if f not in tainted["functions"] + new_taint["functions"] and not ( - f.is_constructor or f.is_fallback or f.is_receive - ): - new_taint["functions"].append(f) - if len(new_taint["functions"]) > 0: + if f not in ( + t.function for t in tainted.tainted_functions + new_taint.tainted_functions + ) and not (f.is_constructor or f.is_fallback or f.is_receive): + tainted_func = TaintedFunction(f) + tainted_func.add_tainted_by(var) + new_taint.add_tainted_function(tainted_func) + if len(new_taint.tainted_functions) > 0: tainted_contracts.append(new_taint) return tainted_contracts From d1b34b64e70da0ce3904408664a91dc02f206d53 Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 4 Apr 2023 12:09:46 -0500 Subject: [PATCH 049/220] Avoid string comparison --- slither/utils/upgradeability.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 7316b480d..df782ef6f 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -352,7 +352,7 @@ def tainted_inheriting_contracts( t.function for t in tainted.tainted_functions for call in internal_calls - if str(call) == str(t.function) + if call == t.function ), next( ( From 85c22f491e56f7aaa15d69606000e89bc6c0271b Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 4 Apr 2023 12:22:30 -0500 Subject: [PATCH 050/220] Avoid re-defining `contracts` in `tainted_inheriting_contracts` --- slither/utils/upgradeability.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index df782ef6f..3be47676a 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -327,15 +327,16 @@ def tainted_inheriting_contracts( """ for tainted in tainted_contracts: contract = tainted.contract + check_contracts = contracts if contracts is None: - contracts = contract.compilation_unit.contracts - contracts = [ + check_contracts = contract.compilation_unit.contracts + check_contracts = [ c - for c in contracts + for c in check_contracts if c.name not in [t.contract.name for t in tainted_contracts] and c.name in [i.name for i in c.inheritance] ] - for c in contracts: + for c in check_contracts: new_taint = TaintedExternalContract(c) for f in c.functions_declared: internal_calls = f.all_internal_calls() From 38acd93bd2f03d2885343847e534709736343b48 Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 4 Apr 2023 12:31:02 -0500 Subject: [PATCH 051/220] Add inline comments --- slither/utils/upgradeability.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 3be47676a..568cb7195 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -247,10 +247,10 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon funcs: a list of Function objects to search for external calls. Returns: - TaintedExternalContract(TypedDict) ( + TaintedExternalContract() ( contract: Contract, - functions: List[Function], - variables: List[Variable] + tainted_functions: List[TaintedFunction], + tainted_variables: List[TaintedVariable] ) """ tainted_contracts: dict[str, TaintedExternalContract] = {} @@ -259,8 +259,10 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon for func in funcs: for contract, target in func.all_high_level_calls(): if contract.is_library: + # Not interested in library calls continue if contract.name not in tainted_contracts: + # A contract may be tainted by multiple function calls - only make one TaintedExternalContract object tainted_contracts[contract.name] = TaintedExternalContract(contract) if ( isinstance(target, Function) @@ -269,10 +271,12 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon not in (f.function for f in tainted_contracts[contract.name].tainted_functions) and not (target.is_constructor or target.is_fallback or target.is_receive) ): + # Found a high-level call to a new tainted function tainted_function = TaintedFunction(target) tainted_function.add_tainted_by(func) tainted_contracts[contract.name].add_tainted_function(tainted_function) for var in target.all_state_variables_written(): + # Consider as tainted all variables written by the tainted function if var not in ( v.variable for v in tainted_contracts[contract.name].tainted_variables ): @@ -285,16 +289,16 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon not in (v.variable for v in tainted_contracts[contract.name].tainted_variables) and not (target.is_constant or target.is_immutable) ): + # Found a new high-level call to a public state variable getter tainted_var = TaintedVariable(target) tainted_var.add_tainted_by(func) tainted_contracts[contract.name]["variables"].append(target) for c in tainted_contracts.values(): - # if len(c.tainted_functions) == 0 and len(c.tainted_variables) == 0: - # continue tainted_list.append(c) contract = c.contract variables = c.tainted_variables for var in variables: + # For each tainted variable, consider as tainted any function that reads or writes to it var = var.variable read_write = set( contract.get_functions_reading_from_variable(var) @@ -330,6 +334,7 @@ def tainted_inheriting_contracts( check_contracts = contracts if contracts is None: check_contracts = contract.compilation_unit.contracts + # We are only interested in checking contracts that inherit a tainted contract check_contracts = [ c for c in check_contracts @@ -339,6 +344,7 @@ def tainted_inheriting_contracts( for c in check_contracts: new_taint = TaintedExternalContract(c) for f in c.functions_declared: + # Search for functions that call an inherited tainted function or access an inherited tainted variable internal_calls = f.all_internal_calls() if any( call == t.function for t in tainted.tainted_functions for call in internal_calls @@ -348,6 +354,7 @@ def tainted_inheriting_contracts( for var in f.all_state_variables_read() + f.all_state_variables_written() ): tainted_func = TaintedFunction(f) + # Given that at least one of the `any` conditions was met, find which one is the taint source tainted_by = next( ( t.function @@ -369,8 +376,9 @@ def tainted_inheriting_contracts( tainted_func.add_tainted_by(tainted_by) new_taint.add_tainted_function(tainted_func) for f in new_taint.tainted_functions: + # For each newly found tainted function, consider as tainted any variable it writes to f = f.function - for var in f.all_state_variables_read() + f.all_state_variables_written(): + for var in f.all_state_variables_written(): if var not in ( v.variable for v in tainted.tainted_variables + new_taint.tainted_variables ): @@ -378,6 +386,7 @@ def tainted_inheriting_contracts( tainted_var.add_tainted_by(f) new_taint.add_tainted_variable(tainted_var) for var in new_taint.tainted_variables: + # For each newly found tainted variable, consider as tainted any function that reads or writes to it var = var.variable read_write = set( contract.get_functions_reading_from_variable(var) From 98a5cf012d1eff1896ac28017c7eabbe5e696d0d Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 4 Apr 2023 12:33:58 -0500 Subject: [PATCH 052/220] Use canonical_name in comparisons --- slither/utils/upgradeability.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 568cb7195..6351eb6cb 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -347,9 +347,11 @@ def tainted_inheriting_contracts( # Search for functions that call an inherited tainted function or access an inherited tainted variable internal_calls = f.all_internal_calls() if any( - call == t.function for t in tainted.tainted_functions for call in internal_calls + call.canonical_name == t.function.canonical_name + for t in tainted.tainted_functions + for call in internal_calls ) or any( - var == t.variable + var.canonical_name == t.variable.canonical_name for t in tainted.tainted_variables for var in f.all_state_variables_read() + f.all_state_variables_written() ): @@ -360,7 +362,7 @@ def tainted_inheriting_contracts( t.function for t in tainted.tainted_functions for call in internal_calls - if call == t.function + if call.canonical_name == t.function.canonical_name ), next( ( @@ -368,7 +370,7 @@ def tainted_inheriting_contracts( for t in tainted.tainted_variables for var in f.all_state_variables_read() + f.all_state_variables_written() - if var == t.variable + if var.canonical_name == t.variable.canonical_name ), None, ), From 1e7397965a523fd14eb4a270d4634e037acd3c0a Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 4 Apr 2023 12:50:41 -0500 Subject: [PATCH 053/220] Fix expected tainted funcs, since we changed what's considered tainted --- tests/unit/utils/test_upgradeability_util.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/unit/utils/test_upgradeability_util.py b/tests/unit/utils/test_upgradeability_util.py index 8dfbccc61..88adcf00f 100644 --- a/tests/unit/utils/test_upgradeability_util.py +++ b/tests/unit/utils/test_upgradeability_util.py @@ -40,7 +40,6 @@ def test_upgrades_compare() -> None: assert new_funcs == [v2.get_function_from_signature("i()")] assert modified_funcs == [v2.get_function_from_signature("checkB()")] assert tainted_funcs == [ - v2.get_function_from_signature("g(uint256)"), v2.get_function_from_signature("h()"), ] From 111559bf750ce58d307806e36fbebb671ad7c973 Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 4 Apr 2023 13:15:20 -0500 Subject: [PATCH 054/220] Black --- slither/utils/code_generation.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index cd72e6c8f..c22a72526 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -6,7 +6,13 @@ from slither.utils.type import ( export_nested_types_from_variable, export_return_type_from_variable, ) -from slither.core.solidity_types import Type, UserDefinedType, MappingType, ArrayType, ElementaryType +from slither.core.solidity_types import ( + Type, + UserDefinedType, + MappingType, + ArrayType, + ElementaryType, +) from slither.core.declarations import Structure, Enum, Contract if TYPE_CHECKING: From 178960f655d35dfde99d1c1a7e8e2b5521dfbfd1 Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 4 Apr 2023 15:09:54 -0500 Subject: [PATCH 055/220] Simplify by removing `TaintedFunction` and `TaintedVariable` classes --- slither/utils/upgradeability.py | 120 +++++++------------------------- 1 file changed, 25 insertions(+), 95 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 6351eb6cb..2a8347ddb 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -63,62 +63,28 @@ from slither.slithir.variables import ( from slither.tools.read_storage.read_storage import SlotInfo, SlitherReadStorage -class TaintedFunction: - def __init__(self, f: "Function") -> None: - self._function: Function = f - self._tainted_by: List[Union[Function, StateVariable]] = [] - - @property - def function(self) -> Function: - return self._function - - @property - def tainted_by(self) -> List[Union[Function, StateVariable]]: - return self._tainted_by - - def add_tainted_by(self, f: Union[Function, StateVariable]): - self._tainted_by.append(f) - - -class TaintedVariable: - def __init__(self, v: "StateVariable") -> None: - self._variable: StateVariable = v - self._tainted_by: List[Function] = [] - - @property - def variable(self) -> StateVariable: - return self._variable - - @property - def tainted_by(self) -> List[Function]: - return self._tainted_by - - def add_tainted_by(self, f: Function): - self._tainted_by.append(f) - - class TaintedExternalContract: def __init__(self, contract: "Contract") -> None: self._contract: Contract = contract - self._tainted_functions: List[TaintedFunction] = [] - self._tainted_variables: List[TaintedVariable] = [] + self._tainted_functions: List[Function] = [] + self._tainted_variables: List[Variable] = [] @property def contract(self) -> Contract: return self._contract @property - def tainted_functions(self) -> List[TaintedFunction]: + def tainted_functions(self) -> List[Function]: return self._tainted_functions - def add_tainted_function(self, f: TaintedFunction): + def add_tainted_function(self, f: Function): self._tainted_functions.append(f) @property - def tainted_variables(self) -> List[TaintedVariable]: + def tainted_variables(self) -> List[Variable]: return self._tainted_variables - def add_tainted_variable(self, v: TaintedVariable): + def add_tainted_variable(self, v: Variable): self._tainted_variables.append(v) @@ -268,49 +234,40 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon isinstance(target, Function) and target not in funcs and target - not in (f.function for f in tainted_contracts[contract.name].tainted_functions) + not in (f for f in tainted_contracts[contract.name].tainted_functions) and not (target.is_constructor or target.is_fallback or target.is_receive) ): # Found a high-level call to a new tainted function - tainted_function = TaintedFunction(target) - tainted_function.add_tainted_by(func) - tainted_contracts[contract.name].add_tainted_function(tainted_function) + tainted_contracts[contract.name].add_tainted_function(target) for var in target.all_state_variables_written(): # Consider as tainted all variables written by the tainted function if var not in ( - v.variable for v in tainted_contracts[contract.name].tainted_variables + v for v in tainted_contracts[contract.name].tainted_variables ): - tainted_var = TaintedVariable(var) - tainted_var.add_tainted_by(target) - tainted_contracts[contract.name].add_tainted_variable(tainted_var) + tainted_contracts[contract.name].add_tainted_variable(var) elif ( isinstance(target, StateVariable) - and target - not in (v.variable for v in tainted_contracts[contract.name].tainted_variables) + and target not in (v for v in tainted_contracts[contract.name].tainted_variables) and not (target.is_constant or target.is_immutable) ): # Found a new high-level call to a public state variable getter - tainted_var = TaintedVariable(target) - tainted_var.add_tainted_by(func) - tainted_contracts[contract.name]["variables"].append(target) + tainted_contracts[contract.name].add_tainted_variable(target) for c in tainted_contracts.values(): tainted_list.append(c) contract = c.contract variables = c.tainted_variables for var in variables: # For each tainted variable, consider as tainted any function that reads or writes to it - var = var.variable read_write = set( contract.get_functions_reading_from_variable(var) + contract.get_functions_writing_to_variable(var) ) for f in read_write: - if f not in ( - t.function for t in tainted_contracts[contract.name].tainted_functions - ) and not (f.is_constructor or f.is_fallback or f.is_receive): - tainted_func = TaintedFunction(f) - tainted_func.add_tainted_by(var) - c.add_tainted_function(tainted_func) + if ( + f not in tainted_contracts[contract.name].tainted_functions + and not (f.is_constructor or f.is_fallback or f.is_receive) + ): + c.add_tainted_function(f) return tainted_list @@ -339,7 +296,7 @@ def tainted_inheriting_contracts( c for c in check_contracts if c.name not in [t.contract.name for t in tainted_contracts] - and c.name in [i.name for i in c.inheritance] + and contract.name in [i.name for i in c.inheritance] ] for c in check_contracts: new_taint = TaintedExternalContract(c) @@ -347,60 +304,33 @@ def tainted_inheriting_contracts( # Search for functions that call an inherited tainted function or access an inherited tainted variable internal_calls = f.all_internal_calls() if any( - call.canonical_name == t.function.canonical_name + call.canonical_name == t.canonical_name for t in tainted.tainted_functions for call in internal_calls ) or any( - var.canonical_name == t.variable.canonical_name + var.canonical_name == t.canonical_name for t in tainted.tainted_variables for var in f.all_state_variables_read() + f.all_state_variables_written() ): - tainted_func = TaintedFunction(f) - # Given that at least one of the `any` conditions was met, find which one is the taint source - tainted_by = next( - ( - t.function - for t in tainted.tainted_functions - for call in internal_calls - if call.canonical_name == t.function.canonical_name - ), - next( - ( - t.variable - for t in tainted.tainted_variables - for var in f.all_state_variables_read() - + f.all_state_variables_written() - if var.canonical_name == t.variable.canonical_name - ), - None, - ), - ) - tainted_func.add_tainted_by(tainted_by) - new_taint.add_tainted_function(tainted_func) + new_taint.add_tainted_function(f) for f in new_taint.tainted_functions: # For each newly found tainted function, consider as tainted any variable it writes to - f = f.function for var in f.all_state_variables_written(): if var not in ( - v.variable for v in tainted.tainted_variables + new_taint.tainted_variables + v for v in tainted.tainted_variables + new_taint.tainted_variables ): - tainted_var = TaintedVariable(var) - tainted_var.add_tainted_by(f) - new_taint.add_tainted_variable(tainted_var) + new_taint.add_tainted_variable(var) for var in new_taint.tainted_variables: # For each newly found tainted variable, consider as tainted any function that reads or writes to it - var = var.variable read_write = set( contract.get_functions_reading_from_variable(var) + contract.get_functions_writing_to_variable(var) ) for f in read_write: if f not in ( - t.function for t in tainted.tainted_functions + new_taint.tainted_functions + t for t in tainted.tainted_functions + new_taint.tainted_functions ) and not (f.is_constructor or f.is_fallback or f.is_receive): - tainted_func = TaintedFunction(f) - tainted_func.add_tainted_by(var) - new_taint.add_tainted_function(tainted_func) + new_taint.add_tainted_function(f) if len(new_taint.tainted_functions) > 0: tainted_contracts.append(new_taint) return tainted_contracts From 3bcefac1c87d9b4fbead106ca25f8ed115b720f7 Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 4 Apr 2023 15:10:19 -0500 Subject: [PATCH 056/220] Black --- slither/utils/upgradeability.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 2a8347ddb..29edfec0f 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -233,17 +233,14 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon if ( isinstance(target, Function) and target not in funcs - and target - not in (f for f in tainted_contracts[contract.name].tainted_functions) + and target not in (f for f in tainted_contracts[contract.name].tainted_functions) and not (target.is_constructor or target.is_fallback or target.is_receive) ): # Found a high-level call to a new tainted function tainted_contracts[contract.name].add_tainted_function(target) for var in target.all_state_variables_written(): # Consider as tainted all variables written by the tainted function - if var not in ( - v for v in tainted_contracts[contract.name].tainted_variables - ): + if var not in (v for v in tainted_contracts[contract.name].tainted_variables): tainted_contracts[contract.name].add_tainted_variable(var) elif ( isinstance(target, StateVariable) @@ -263,9 +260,8 @@ def tainted_external_contracts(funcs: List[Function]) -> List[TaintedExternalCon + contract.get_functions_writing_to_variable(var) ) for f in read_write: - if ( - f not in tainted_contracts[contract.name].tainted_functions - and not (f.is_constructor or f.is_fallback or f.is_receive) + if f not in tainted_contracts[contract.name].tainted_functions and not ( + f.is_constructor or f.is_fallback or f.is_receive ): c.add_tainted_function(f) return tainted_list From fa4ca2c454da4500ecf9ce4d0c1f38185a1552f4 Mon Sep 17 00:00:00 2001 From: aga7hokakological Date: Thu, 6 Apr 2023 00:22:43 +0530 Subject: [PATCH 057/220] fixed: changed name of the printer pausable -> not-pausable --- slither/printers/summary/when_not_paused.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/printers/summary/when_not_paused.py b/slither/printers/summary/when_not_paused.py index d8a57b6c7..c45f32d5b 100644 --- a/slither/printers/summary/when_not_paused.py +++ b/slither/printers/summary/when_not_paused.py @@ -23,7 +23,7 @@ def _use_modifier(function: Function, modifier_name: str = "whenNotPaused") -> b class PrinterWhenNotPaused(AbstractPrinter): - ARGUMENT = "pausable" + ARGUMENT = "not-pausable" HELP = "Print functions that do not use whenNotPaused" WIKI = "https://github.com/trailofbits/slither/wiki/Printer-documentation#when-not-paused" From 82960f387c0216b94e2ee404e882a2da30c88e08 Mon Sep 17 00:00:00 2001 From: aga7hokakological Date: Thu, 6 Apr 2023 00:25:52 +0530 Subject: [PATCH 058/220] fixed: pausable printer includes checks on constructor() --- slither/printers/summary/when_not_paused.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/slither/printers/summary/when_not_paused.py b/slither/printers/summary/when_not_paused.py index c45f32d5b..aaeeeacec 100644 --- a/slither/printers/summary/when_not_paused.py +++ b/slither/printers/summary/when_not_paused.py @@ -10,8 +10,6 @@ from slither.utils.myprettytable import MyPrettyTable def _use_modifier(function: Function, modifier_name: str = "whenNotPaused") -> bool: - if function.is_constructor or function.view or function.pure: - return False for internal_call in function.all_internal_calls(): if isinstance(internal_call, SolidityFunction): @@ -46,6 +44,8 @@ class PrinterWhenNotPaused(AbstractPrinter): table = MyPrettyTable(["Name", "Use whenNotPaused"]) for function in contract.functions_entry_points: + if function.is_constructor or function.view or function.pure: + continue status = "X" if _use_modifier(function, modifier_name) else "" table.add_row([function.solidity_signature, status]) From 1e8abe01d11af1a9e2a4d45178ef4296e09e4f69 Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 7 Apr 2023 16:20:22 +0200 Subject: [PATCH 059/220] Fix try catch infinite recursion --- slither/solc_parsing/declarations/function.py | 13 ++++++++----- .../trycatch-0.4.0.sol-0.4.0-legacy.zip | Bin 724 -> 751 bytes .../trycatch-0.4.0.sol-0.4.1-legacy.zip | Bin 723 -> 752 bytes .../trycatch-0.4.0.sol-0.4.10-legacy.zip | Bin 795 -> 821 bytes .../trycatch-0.4.0.sol-0.4.11-legacy.zip | Bin 805 -> 832 bytes .../trycatch-0.4.0.sol-0.4.12-compact.zip | Bin 862 -> 886 bytes .../trycatch-0.4.0.sol-0.4.12-legacy.zip | Bin 873 -> 894 bytes .../trycatch-0.4.0.sol-0.4.13-compact.zip | Bin 866 -> 886 bytes .../trycatch-0.4.0.sol-0.4.13-legacy.zip | Bin 873 -> 894 bytes .../trycatch-0.4.0.sol-0.4.14-compact.zip | Bin 865 -> 885 bytes .../trycatch-0.4.0.sol-0.4.14-legacy.zip | Bin 873 -> 893 bytes .../trycatch-0.4.0.sol-0.4.15-compact.zip | Bin 865 -> 886 bytes .../trycatch-0.4.0.sol-0.4.15-legacy.zip | Bin 873 -> 894 bytes .../trycatch-0.4.0.sol-0.4.16-compact.zip | Bin 864 -> 883 bytes .../trycatch-0.4.0.sol-0.4.16-legacy.zip | Bin 872 -> 891 bytes .../trycatch-0.4.0.sol-0.4.17-compact.zip | Bin 863 -> 879 bytes .../trycatch-0.4.0.sol-0.4.17-legacy.zip | Bin 871 -> 888 bytes .../trycatch-0.4.0.sol-0.4.18-compact.zip | Bin 863 -> 881 bytes .../trycatch-0.4.0.sol-0.4.18-legacy.zip | Bin 870 -> 889 bytes .../trycatch-0.4.0.sol-0.4.19-compact.zip | Bin 863 -> 882 bytes .../trycatch-0.4.0.sol-0.4.19-legacy.zip | Bin 870 -> 890 bytes .../trycatch-0.4.0.sol-0.4.2-legacy.zip | Bin 725 -> 751 bytes .../trycatch-0.4.0.sol-0.4.20-compact.zip | Bin 860 -> 881 bytes .../trycatch-0.4.0.sol-0.4.20-legacy.zip | Bin 867 -> 889 bytes .../trycatch-0.4.0.sol-0.4.21-compact.zip | Bin 859 -> 879 bytes .../trycatch-0.4.0.sol-0.4.21-legacy.zip | Bin 867 -> 888 bytes .../trycatch-0.4.0.sol-0.4.22-compact.zip | Bin 887 -> 910 bytes .../trycatch-0.4.0.sol-0.4.22-legacy.zip | Bin 894 -> 917 bytes .../trycatch-0.4.0.sol-0.4.23-compact.zip | Bin 887 -> 909 bytes .../trycatch-0.4.0.sol-0.4.23-legacy.zip | Bin 895 -> 917 bytes .../trycatch-0.4.0.sol-0.4.24-compact.zip | Bin 887 -> 907 bytes .../trycatch-0.4.0.sol-0.4.24-legacy.zip | Bin 896 -> 915 bytes .../trycatch-0.4.0.sol-0.4.25-compact.zip | Bin 888 -> 907 bytes .../trycatch-0.4.0.sol-0.4.25-legacy.zip | Bin 896 -> 915 bytes .../trycatch-0.4.0.sol-0.4.26-compact.zip | Bin 887 -> 908 bytes .../trycatch-0.4.0.sol-0.4.26-legacy.zip | Bin 896 -> 916 bytes .../trycatch-0.4.0.sol-0.4.3-legacy.zip | Bin 723 -> 752 bytes .../trycatch-0.4.0.sol-0.4.4-legacy.zip | Bin 725 -> 751 bytes .../trycatch-0.4.0.sol-0.4.5-legacy.zip | Bin 726 -> 752 bytes .../trycatch-0.4.0.sol-0.4.6-legacy.zip | Bin 725 -> 752 bytes .../trycatch-0.4.0.sol-0.4.7-legacy.zip | Bin 800 -> 825 bytes .../trycatch-0.4.0.sol-0.4.8-legacy.zip | Bin 799 -> 824 bytes .../trycatch-0.4.0.sol-0.4.9-legacy.zip | Bin 795 -> 819 bytes .../trycatch-0.4.0.sol-0.5.0-compact.zip | Bin 891 -> 911 bytes .../trycatch-0.4.0.sol-0.5.0-legacy.zip | Bin 899 -> 918 bytes .../trycatch-0.4.0.sol-0.5.1-compact.zip | Bin 887 -> 910 bytes .../trycatch-0.4.0.sol-0.5.1-legacy.zip | Bin 894 -> 917 bytes .../trycatch-0.4.0.sol-0.5.10-compact.zip | Bin 906 -> 922 bytes .../trycatch-0.4.0.sol-0.5.10-legacy.zip | Bin 912 -> 931 bytes .../trycatch-0.4.0.sol-0.5.11-compact.zip | Bin 903 -> 924 bytes .../trycatch-0.4.0.sol-0.5.11-legacy.zip | Bin 910 -> 932 bytes .../trycatch-0.4.0.sol-0.5.12-compact.zip | Bin 902 -> 922 bytes .../trycatch-0.4.0.sol-0.5.12-legacy.zip | Bin 909 -> 930 bytes .../trycatch-0.4.0.sol-0.5.13-compact.zip | Bin 903 -> 923 bytes .../trycatch-0.4.0.sol-0.5.13-legacy.zip | Bin 910 -> 930 bytes .../trycatch-0.4.0.sol-0.5.14-compact.zip | Bin 903 -> 923 bytes .../trycatch-0.4.0.sol-0.5.14-legacy.zip | Bin 911 -> 931 bytes .../trycatch-0.4.0.sol-0.5.15-compact.zip | Bin 905 -> 922 bytes .../trycatch-0.4.0.sol-0.5.15-legacy.zip | Bin 912 -> 930 bytes .../trycatch-0.4.0.sol-0.5.16-compact.zip | Bin 904 -> 920 bytes .../trycatch-0.4.0.sol-0.5.16-legacy.zip | Bin 911 -> 928 bytes .../trycatch-0.4.0.sol-0.5.17-compact.zip | Bin 899 -> 920 bytes .../trycatch-0.4.0.sol-0.5.17-legacy.zip | Bin 907 -> 928 bytes .../trycatch-0.4.0.sol-0.5.2-compact.zip | Bin 891 -> 908 bytes .../trycatch-0.4.0.sol-0.5.2-legacy.zip | Bin 898 -> 916 bytes .../trycatch-0.4.0.sol-0.5.3-compact.zip | Bin 889 -> 910 bytes .../trycatch-0.4.0.sol-0.5.3-legacy.zip | Bin 897 -> 918 bytes .../trycatch-0.4.0.sol-0.5.4-compact.zip | Bin 892 -> 910 bytes .../trycatch-0.4.0.sol-0.5.4-legacy.zip | Bin 899 -> 917 bytes .../trycatch-0.4.0.sol-0.5.5-compact.zip | Bin 890 -> 910 bytes .../trycatch-0.4.0.sol-0.5.5-legacy.zip | Bin 898 -> 918 bytes .../trycatch-0.4.0.sol-0.5.6-compact.zip | Bin 891 -> 908 bytes .../trycatch-0.4.0.sol-0.5.6-legacy.zip | Bin 898 -> 916 bytes .../trycatch-0.4.0.sol-0.5.7-compact.zip | Bin 887 -> 910 bytes .../trycatch-0.4.0.sol-0.5.7-legacy.zip | Bin 894 -> 918 bytes .../trycatch-0.4.0.sol-0.5.8-compact.zip | Bin 891 -> 909 bytes .../trycatch-0.4.0.sol-0.5.8-legacy.zip | Bin 899 -> 917 bytes .../trycatch-0.4.0.sol-0.5.9-compact.zip | Bin 904 -> 920 bytes .../trycatch-0.4.0.sol-0.5.9-legacy.zip | Bin 911 -> 928 bytes .../trycatch-0.6.0.sol-0.6.0-compact.zip | Bin 5348 -> 5895 bytes .../trycatch-0.6.0.sol-0.6.1-compact.zip | Bin 5335 -> 5904 bytes .../trycatch-0.6.0.sol-0.6.10-compact.zip | Bin 5120 -> 5683 bytes .../trycatch-0.6.0.sol-0.6.11-compact.zip | Bin 5121 -> 5686 bytes .../trycatch-0.6.0.sol-0.6.12-compact.zip | Bin 5122 -> 5676 bytes .../trycatch-0.6.0.sol-0.6.2-compact.zip | Bin 5337 -> 5896 bytes .../trycatch-0.6.0.sol-0.6.3-compact.zip | Bin 5338 -> 5911 bytes .../trycatch-0.6.0.sol-0.6.4-compact.zip | Bin 5340 -> 5917 bytes .../trycatch-0.6.0.sol-0.6.5-compact.zip | Bin 5343 -> 5910 bytes .../trycatch-0.6.0.sol-0.6.6-compact.zip | Bin 5359 -> 5927 bytes .../trycatch-0.6.0.sol-0.6.7-compact.zip | Bin 5370 -> 5934 bytes .../trycatch-0.6.0.sol-0.6.8-compact.zip | Bin 5385 -> 5943 bytes .../trycatch-0.6.0.sol-0.6.9-compact.zip | Bin 5114 -> 5681 bytes .../trycatch-0.6.0.sol-0.7.0-compact.zip | Bin 5033 -> 5580 bytes .../trycatch-0.6.0.sol-0.7.1-compact.zip | Bin 5032 -> 5584 bytes .../trycatch-0.6.0.sol-0.7.2-compact.zip | Bin 5036 -> 5593 bytes .../trycatch-0.6.0.sol-0.7.3-compact.zip | Bin 5037 -> 5584 bytes .../trycatch-0.6.0.sol-0.7.4-compact.zip | Bin 5036 -> 5586 bytes .../trycatch-0.6.0.sol-0.7.5-compact.zip | Bin 5033 -> 5588 bytes .../trycatch-0.6.0.sol-0.7.6-compact.zip | Bin 5036 -> 5588 bytes .../trycatch-0.6.0.sol-0.8.0-compact.zip | Bin 5994 -> 6717 bytes .../trycatch-0.6.0.sol-0.8.1-compact.zip | Bin 6204 -> 6858 bytes .../trycatch-0.6.0.sol-0.8.10-compact.zip | Bin 6459 -> 7209 bytes .../trycatch-0.6.0.sol-0.8.11-compact.zip | Bin 6463 -> 7209 bytes .../trycatch-0.6.0.sol-0.8.12-compact.zip | Bin 6464 -> 7205 bytes .../trycatch-0.6.0.sol-0.8.13-compact.zip | Bin 6479 -> 7201 bytes .../trycatch-0.6.0.sol-0.8.14-compact.zip | Bin 6477 -> 7201 bytes .../trycatch-0.6.0.sol-0.8.15-compact.zip | Bin 6482 -> 7182 bytes .../trycatch-0.6.0.sol-0.8.2-compact.zip | Bin 6267 -> 6952 bytes .../trycatch-0.6.0.sol-0.8.3-compact.zip | Bin 6262 -> 6947 bytes .../trycatch-0.6.0.sol-0.8.4-compact.zip | Bin 6346 -> 7011 bytes .../trycatch-0.6.0.sol-0.8.5-compact.zip | Bin 6363 -> 7045 bytes .../trycatch-0.6.0.sol-0.8.6-compact.zip | Bin 6359 -> 7040 bytes .../trycatch-0.6.0.sol-0.8.7-compact.zip | Bin 6338 -> 7047 bytes .../trycatch-0.6.0.sol-0.8.8-compact.zip | Bin 6481 -> 7208 bytes .../trycatch-0.6.0.sol-0.8.9-compact.zip | Bin 6495 -> 7216 bytes .../trycatch-0.6.0.sol-0.6.0-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.1-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.10-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.11-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.12-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.2-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.3-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.4-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.5-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.6-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.7-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.8-compact.json | 2 +- .../trycatch-0.6.0.sol-0.6.9-compact.json | 2 +- .../trycatch-0.6.0.sol-0.7.0-compact.json | 2 +- .../trycatch-0.6.0.sol-0.7.1-compact.json | 2 +- .../trycatch-0.6.0.sol-0.7.2-compact.json | 2 +- .../trycatch-0.6.0.sol-0.7.3-compact.json | 2 +- .../trycatch-0.6.0.sol-0.7.4-compact.json | 2 +- .../trycatch-0.6.0.sol-0.7.5-compact.json | 2 +- .../trycatch-0.6.0.sol-0.7.6-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.0-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.1-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.10-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.11-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.12-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.13-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.14-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.15-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.2-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.3-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.4-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.5-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.6-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.7-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.8-compact.json | 2 +- .../trycatch-0.6.0.sol-0.8.9-compact.json | 2 +- .../solc_parsing/test_data/trycatch-0.6.0.sol | 8 ++++++++ 152 files changed, 52 insertions(+), 41 deletions(-) diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index ba2f225f0..6b1846107 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -1145,20 +1145,23 @@ class FunctionSolc(CallerContextExpression): node.set_sons([start_node]) start_node.add_father(node) - def _fix_try(self, node: Node) -> None: + def _fix_try(self, node: Node, visited: set[Node] = None) -> None: + if visited is None: + visited = set() end_node = next((son for son in node.sons if son.type != NodeType.CATCH), None) if end_node: for son in node.sons: if son.type == NodeType.CATCH: - self._fix_catch(son, end_node) + self._fix_catch(son, end_node, visited) - def _fix_catch(self, node: Node, end_node: Node) -> None: + def _fix_catch(self, node: Node, end_node: Node, visited: set[Node]) -> None: if not node.sons: link_nodes(node, end_node) else: for son in node.sons: - if son != end_node: - self._fix_catch(son, end_node) + if son != end_node and son not in visited: + visited.add(son) + self._fix_catch(son, end_node, visited) def _add_param(self, param: Dict) -> LocalVariableSolc: diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.0-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.0-legacy.zip index e575a37a7c8bc2e9b024ea59d6ca4fdf0816c446..04dc217a84de9c3beaac4d62359325d0236165af 100644 GIT binary patch delta 615 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 PPyWkf#I_Nb8W|V>;MOgP diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.11-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.11-legacy.zip index 46d896ba07de092a59a948b9ceb9ee137837c2ef..bf56ab75e25dba4030b38042a9ea48712d1f96d0 100644 GIT binary patch delta 697 zcmV;q0!IC%2EYawP)h>@KL7#%4gd{*hgLP0jggW9001Qkkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8L^artp7)Nk0^9*PE z^s_SHgs(xSN@z5H2UIwR!~c*5g+f>*P$}?r;yuEOasP9k6uF>@W9}UG6P4kEv8ZgE zV$vs{!uDPzw&+M3W;iXj2Vplf%STKzqhsE{gudBAe)r(;99%+p# z3v|i$e40RlY97|k`e{_VOm~t#<2V=zX~XPeee!Za$c0CLqkMSCF4s!pW4QiUab(h} zaCe$@xiep;gqlOd7Obb)pXIoAG|sk%IRR5+Vr#|>iB#)-rSz8)?1-0js>P+NC$>N; zx0baDlZkHL$&8W<uIBl2Kl z>BQWSyxXgPZQbPr&>U)-^FkV?r>gx2-Q=1`~2JniJH6A+EJ-oHfj|v zQwR6E`^%5mB!O)l=1MJ%HP~&Wl`E%?S!husTDJZ4Mnr^+PwXTRF0bd!gpP$Xa>vds zMio^;y0bKRh1z(2_%X)2El7PB->w0(B>Y(w z>1)~>&(x21!&T7Z^Dx5NglP@*wVlaFL#nhC9sRvAIQ>M6<^S`Fht^O_0Rle*KL7#% f4gd`ee}`5zmyMB<0ssId36s?VN(R;f000001xr|5 delta 690 zcmV;j0!{tE2BiiYP)h>@KL7#%4gj-ra8zuD^EY<_008|5001VF0Rt(KL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3y&0pqh?0n>Ip&Vaa10~2Nx^?WHjz>(2c&FferZBys~hzkNFVw~$ zU>C0-Xnht=^g1CR6OhRP`aUo(Ha?jvP%k2Zq@5xz58;cNJBGl^4WNI_!PQ-nm|3^} ze)Nxa@gtJ=J|c4DY7!FGd?g3+Si1G>d3#nft#Yc$oN+$NFg(=<^|toEv`yV4V=q;H3bT?ueK( zTzhzut8_iIW{OQ}QaA_^#-BK^=AkJbS-NAK8;*|rDk4)O)hbpXJbd%+;Db!?W!C$h zN*TXeIyKz4H3=vg{|_|vD3|^^e3MX10Rle*KL7#%4gj-ra8zuD^EY<_008|5001Tc Y0000000000005Kz0z3x00ssI20DI9uTL1t6 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.12-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.12-compact.zip index e16147f510ff08c4680725ed34f46add438484a2..9fb83735c9232735ed896c2fd88f5ac8a2a3a412 100644 GIT binary patch delta 752 zcmV@KL7#%4gd~+hgL6MBeci@000RJ001VF9|I|oL@IyvLq3k% z8(|US<+$<-R-TXbNE-97FH-K9mq@1&+0=A#oo)!e&BSqqY@)H2tpV5?K7wRBZt4}$ zBQpE?X)yD}^0K78!#x5CbQ(**;`Y?sQwoZ^(xv9rtB`VsY#g48&iHyQUdEw<99y13 z;QtO>to{$x(J-QJ9*`CBLDYXAGmJ^5B^{WH|AG;v2XAM62)9-Abd98!7Y--4r1sd$ z(nuM0I1XaHWsjVY0|<=a6EgfH+7sF)>m>)vMK~Uu}1B&NYMess9JT{fFfj3=FNMe zB^g$-efuAh%hsCgu#a2-^3-UgjsL{8V5Pgnzn_l>UCO9XB7^D&+dDNTFTbzyfyCb- z^62<|76B-Nu!g(Cx^aI9d`A-G+Q9(AYceBD_{Jdl2gKfld?WFbIxPRJcV@0R-){+9 zWRJ=ltE@_7k5u%%8$%tsm7OX+=Oj#1=Y8PQZS^;kYX<;RMBdxz!PXXbBj-B-oi${0 zi^T`=wkm%jY?WcaIl}oBaU~X`BW@{RdszZt^+GW6d&T0TQYC)|X+GJ+n^>#t)S)tV z?ZI#smYfBNiy~kNQipDj6j~6UN|^yDGUu^d-)Z8?q~%phA5NgYidOu?6w@!;AWX^= zQupiTH=rbHZ;IZ=Fqb6!JfEepW;v9KRH`=U3~8KF%}{Qfx_?a@$M0{;G;+;aWrq&o zyW!v@U}w$2jaof&){^fzBwq`FTC4&J>L^8RQffNGpH&t90^7O)@c-}NK!Z?A0Rle* iKL7#%4gd~+hgL6MBeci@000RJlMVw)1`GoL0001bv|_~o delta 721 zcmV;?0xtdb2Hpl3P)h>@KL7#%4gl@7WLAU?oZzqm005K-kr-Bg@kbAZrIlV+*LwgE zaqkuAn-IgLaZPnscN={wfW})Juc+K?NS}K zY#VQ_!CBRoJi5uZHJ2$4!t7=d{j6DC#$zS$d4H!fRS!R<^(BsZ$g0-@%m9(IWr%y3 znCnoZQ;8CT3Wyhf3-WdX)V`NrU$A!XWb}l7021PxS0Oc)j%tQTUJ7$c{^kIzL{-@~ z+2&Db-1?%S(>P0t@Cm8c<8NnHWBTRAjt1z?LPU#X1n^_zlc1q<`B!R2%ffWAt#GX& z!0s-JnXK^DSf7H89Qd0P$XqXm0xwYujjvG)xu`>?#YGN(JH;gmHgLM8WdF}IKT9EJ zb+bWBGgL4m(v~(yJXclxH%RnyLu41@hxCKz+k)={dm;7JV1!s=&x zxb7Kh$gN`ME*v58!FcNKIQV&g)|eqo-DMv>#Fz*O5&5VS#q(EC zY;(K!Iq}aqTyao0YDKUIrg(vKSn=qS1~_vd`gnBVx0ssJ%2$LoQN(S@-00000 DYnN3+ diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.12-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.12-legacy.zip index caf1e250b3fbfde591c3b410794115777c23f317..31185f085f8284cb502718f60a188ed18bf71519 100644 GIT binary patch delta 759 zcmV@KL7#%4gd~+hgJzNCGXGz001xwkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8L_%uoJ|RDt#doTZFpD#x^DeDDX98f@y|2IcB#QrVoye`k^iaNEqZ7WEcO>>D_Tw9OAv z>rvUX+=b`eBh)ZW1e9}EU}=Q&h4WftvoWfdqsov(a~)wCjmR8~&*2N(aY%)w-INJ(}2iC5}faiP)|L%J) p>rhJp0zU&k00ICG01khLRtYdA@6ZAO05A%Z83RfN6axSN002h!VL<=@ delta 745 zcmV@KL7#%4gj-ra8&9(=QXqjVTRM4|afIbUkE-3y&6ca{ro**wl1bSO~>l$eSdqbt)yv&L1@| zyu~c0T9M!h0~g6;`-{m_$&!DW1g(FjmKz;NZhGO9q|g?lA}NNC|8ARYUiMB6(yAUH zNRn;iGjPF;*gJY|n+L^cGC*UvF|2=;5?t)YIkrN> z-PJTI9!<6ABR3q$n5i10kI#cQYPH0;VCwzqbvX*<8<3C}V`^GP^J)VWV9)}`BuNin ztBB608-Olnj{lY6=k-5{GV%2q1_+|w@6v*)q5jZf(y{J!M@1=`?O>E{WDRcaJ&>$X z4|#saoKwii+Rkr~RxW=%QOu$P7%u~70d?!KNjdqRnTnA|^Uh2i2cZI>g`Ij8+Qfe( z*}tCcH92+Y$P2Gq>F{Cpw*(0LQ)H<2&d(&K+Z;Vs+z`;_Vv(GvsD2CnJ>gz5AGv?Qnr*Ow0|QDl(XPV^ ztXVzxYBu~@UpLdc?HYzpYwiqpeD*Nk$mfqsRoB)f;fhDM{`9PH0+W1^3WqO2hw6N1 zb3A(}ZQpmJy%u)vX_r4&2V9#t6qaiJMRo9xHPi+vrgmXEYKxdl#(@A7mK;mRrXJO? zAcZznTQk5#bcHtg!da(_I?j!^+t{WZ&ce*O928u13v%)01g1N bb8uAZKIb*N0ssK{2$L=YN(TP|00000VGLwQ diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.13-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.13-compact.zip index 893be6e1571a70f5bf1fcac2d2135aa22f472698..fefebf9530148339d6afca8b4c892421258c4717 100644 GIT binary patch delta 751 zcmV@KL7#%4ge2-hgPOrJA%jp000RJkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8L{N43l#-V~7Tb@GT z{|;QN{twmBFrsdM9*`CBLDU~Jj7g>?9hi&%f)S+$Z)bf7w^j6Xjii?s4kx#y_SnnP zNEvoG4r0A!kDQPL2#nzqGX}xuukE3m{rG39J+Zh7mWlf@pXaC=`Rwf(qWS0rVy(JC z2}BdoBD-$T!m+S`I7l@yF;YR*tJSApZFh0bHG}o3{|CW;{fFfj3+dKs^YnT9b+7~8HY?7=dfZ=0mly!eB^SP^D&Hb z23}(o7<81G(9tL<1a%uBqD-d#T&i*t%v>I4#6LWdAC^*ZBD0vIvz7VtZ3dXyhOBg( zAEVfBVb+g-Oa>J)rHH6GN4m9VUa!E;ZQow*-+1?Xn^#IZIadjB)oxj?MNX7!d`;j^ zmM*x$sG!lDUI&r7wOdUd;-Q+4O5z+?DHtmE4fekXyG^2R-ufPz12G z+nL}QnwN#W@j3cFT2)KJZEf$9!9=Sl$Gh(Rmkfu0O*?RMX?5=^7SVoS2jmMejfV;1 zkH1of<>_NIryQ{y(Er}dDhR+k?bOz_uiAN9 zfaafx!>JW>Y_zsPCXGNK9$4U%u>2OxddLpGNcVApnP|uwMWweti=!jPBv%wyYrbCZ zbl@KL7#%4gj-ra8!;R1!lAY007bmkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiyfP6RuPmZkf+HkmP{ucce{|8g z7!0DKX`CGBx3JJcHULsH)UrTMe~q>F+( zR~k5{PvWnQElqQ(U$3^~FF4e_l>~%taA^T}Xp5o?99W=5PLm@J-a}8UIQNs>l!=Ph zPc>UhA}@tr9VO~itz~-7LyzmLACZh=3rD0p^>#HIdec#4F>QTAL{g{HUu>cjSG4dORj6Ujsaw?8|u`)Q0uDwLu~+gC!D`XBP4D+CPg^M_Foq*qcAgn^8yA1A28)tCJvDuB_y_S4$Ie$ zE6>mps&v}N8!i6d_gU3DxIMs@n$xTwa7$9y)g6obJh`~@KL7#%4ge2-hgOB;-A&K}001xwkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8L{N43l#-V~7Tb@GT z{|;QN{twmBFrsdM9*`CBLDU~Jj9{aT*Hh$)F;xR%3?n4p-XsX8j(yzfxIIeS^d1P) zZ^>%uoJ|RDt#doTZFpD#x^DeDDX98f@y|1^*lZ0(*jYgSlKf&Dfn+F(30tP4!C-&HlMu zXcMA-iAP%B=oc=pWqU?GdGnD+bVRq26I=XSrAWuRV^~A_%w>TM033Cf`bjJVy delta 745 zcmV@KL7#%4gj-ra8&Ro%OJY~008+2001VFKLaU|L?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3y&CIi)yxk-Do4Ufk(w&$eSdqbt)yv&L1@| zyu~c0T9M!h0~g6;`-{m_$&!DW1g(FjmKz;NZhGO9q|g?lA}NNC|8ARYUiMB6(yAUH zNRn;iGjPF;*gJY|n+L^cGC*UvF|2=;5?t)YIkrN> z-PJTI9!9^kR_%GIoT@5u6fwVqD=HIZ-kCm%!UIcddxC|X?OVk8qxd^A5s!{+{|u`*Y;NQ{tFT2h=6GAI#TFel2)fn+1`EG_RGYTJY5AOkblf zKOWm0^D;_kPIejCFZ?Od;U68DjE|_R6=MGdd6t@KxVJNkuj>RpKZ7 zB&qAivYCHnOAo!-b2-($QZz}L3v%@4H={k!jNcZ3!Wf39HO7!Bc@vxIbA<6{Bg_<(<^%HPe(-IjlV5NSoi`}VyBn)uA{ zgWy+%5c&0${b{07z<@Vmv|f1Sr3uHO%<|dPJ1`kuusC#D;vhk6b+&fX9bmGd zejEj?d>zx3MwXgD)Ef#}y={_nn&g^cDn5kFQ6;htG|KSK*oc0#Hn?bKc9Xo5w3w{b z+S;$N#*J^v4f-}mH}bj%6UCrrok`nmxFY@|GCF3n^oM!<=w=2`O928u13v%)01g1N bb8uAfC(9ta0ssK{2$L=YN(TP|00000!*6Wg diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.14-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.14-compact.zip index 4c4a6fea8fd1cf9756b13e0374aa774b289a486e..bdc77a05443a8052f4bdbff7c7c35a13da0914e0 100644 GIT binary patch delta 750 zcmV@KL7#%4ge5;hgKBPtmwxA000RJkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8M0fP|qm@aGtT&J;I zFBwZh57U3Afel4}IMs%x$aVa7bxMad!1kotLK`QRSMyd9;O&O)$aj_bg}lSh*RGpB z|0~(cvmyPx2r6V;VH9sc*RdgA1^7?xF)tebboZ`G!B>%n%B_c(ey*+4 zG>>C@oA&CZwcP@9Ko7B0!uFZqLph9Ow*4B|r;scNd;4uX9RNpTI#SkHl(~zs?HhF&Vunc>aiU>|QOIh3 zDv;C9o$Q4-3s!|Fb|@AtJM6v>Yg%GhqU%Z|zyHrE%JA&mMgBQS9cxk#L-NNi3#DC# zY=RwWCw10;M`r|y^|Wfaio^qfr?`oq_jUJ2{VUo@T2Zy8uJdh!wMr0S|F|c=GLb!> z^;CB=4z+M(krIUiLBsT=m0E*x*Y#ZbvZktMtrluce;m^LpKqxr74h5@mHZl%;osl4 zPkT9NQ@;Ao$jcORCj*r-XDV90Ln8?dpoxrhCj>fwO%?!i!Tk-%{4iatLO^~RQnFTT zO)2v%1hj2YvZv&2hoJWwb}sihlcXFYP$>HY>giEu$`$3Tk<&vP|IWQ)PPKe_M%N9} z9dX}Tz!qHtzdg3c*zK#1xBG)z+j>RsFq4L=77$h%YaC(g9a65kMcQ{u*FuM*Km!>> z>R~NH?J}Rhq~B?+rB`e`WC(kZyQ85^2s>oy;Riz;dWl@KL7#%4gj-ra8&z>^5?Sx007bmkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei-+&Pae6N=IE?n>Dq=%|;S(&c6Psif?y>e*$^6oQ< z93+u;0=MXu#!`nIAP3aw-UDAGbRxpy&X?%-*ALcTUIo)x+Pw(* z8D=aFom^rAA)w4@xLu_RF^JB^xE7g$YJqx@+V4s4btyhlq8*1?bqG6p(T_(o8!@WE06>eYeJWXDhLTN|! z0}$yhG2R%;CH~L>V)uE6fK#pi-~6@5P)h*3! M14;(>0ssI20C6W?DF6Tf diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.14-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.14-legacy.zip index 1058278ba027da200f34e5786ad26cd62c4f8a9b..535eee60f0501bc9ccd1413a2e706f295fbc1ce9 100644 GIT binary patch delta 758 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 M14;(>0ssI20Kd*x3jhEB diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.15-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.15-legacy.zip index b55301acb40e65410609b0e7a1de1b283ce4481b..a2e2a572fa743297a11cdb9a98a2a9ce22222f83 100644 GIT binary patch delta 759 zcmV@KL7#%4ge8J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8M1}l-Vk=l_Lu5SZX z3;`~pp0!n4pvkd+y=nX3-fazBx}lRxLLU>K5m*gL4TmEDktOve7aG*3-r>{6hDEXA z9Yse6c+Za6I6N=k$SO*dXm0+7-F zvMjwq<;;Cqaa!R~7q2jivvEFGGJi+&MZOm^{A@O*Ba>=>7qMER4NjV-fv-`-Y`b$t z)78zHXFNgpw^%1s{Fet21j3`yt)-v5l=c!Ju91KLSqO#7dZ4Gjw;gB z{VB7@Zj+{nLoV%G_hf+Gc(qs=@!N77liM@j!)=WCH}>$(P5JVze6xs*^sXK4)8*|O zk_?2LrZP2u-4|WIIkx9tK7FmQu%6$yjR1G#S`4=r{j|#xa%4%sg4eWCw9vJ%sVg#B zqq{x^gcHOR0mqy<#NFinOU|fjmPNEd>h_?!VeM4r*Fw%HR1W$u+6 zjhqFHNJoygSyrtD`nLl=i|mcx_?oH6X+r=RMR0w(rGo;-hAc*nlrR)Iw&N)H+f(O7 zC@KL7#%4gj-ra8%+}?Z~?V008+2001VFKLaU|L?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3y&Oa+1WszEh;G165j4#qQ=x)>*41}U0}$< z7;zyaDwBBUw&CC3B987?KE{80N)>5JkvlcZ9S|!%#rguSPlQ=3iebh>wVZz4NDox& z7OlJH%Su444|zSale!?NVe>xD>Zs+Uog)73melke1$39of8X=AE6cm^!>V-8I-#Jk zcBZ3{exw&s5cs=tY~Ic*8jbqOIG+T`I8Ya`6t@Xpv`s1WviL!}(+_{&<))&=;52dn zRRuA0NY&u13b}h|JG`}ed@=+LyFxpoI5S?kofHPh`4);Af5?;#am>huFvhnzVcMe} z4d*}aNdV5TZ<#^_FwB-Gg57TjY(c?8()D5&DN0BA?Ky=Q-(O9R5|qts(a+TGriU_@5Tl-RoAW$Fh5n)8=OFU*M&z5>`TbyvzwL%WFwJJFd-$4Y3w<3=MygS$>5+J#n*ougbcXb{pwKzW{$_vRKhNtrz8+CC>)P zn_UzpybN> zuIQ@iy{sB%M-GrkcLNR%$lQyE>i#@KL7#%4geB=hgQKZfDpw3000RJ001VFApc?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djo{P^4phjv_ zkf#JPBMM0bU|%XU4Q5<(-GzTwV`@m#UvS%^_@jahj?@RGdBEs^&#>eA461JACvjy&UwIB`@xSN zn=VVv@N!HPSt|acGyW(T`q|c(2ibnQ)O!e+52B#p4@cSjvYSA-a`u1sx6i%#yj)7w zE&VTXoisPyKt%zuMmAzDJ)e~(OUw`phQ(Bw0tST+hVDJ#~#*?hsgiIprBei0ptO{?GDoNEjy+DPocW3 zHv9rJi9vn?De|mS7_NU)J+B&7DUsg-ow9((cwcAhW$gZ!UU~q+0ae82qQz@N9MTyT zOO8i^ICK`|bU+-gyo2$}N+sT8a%I~{DZ0JW+pkppz!jWv77!Czou@HFYnsE^m`l5* z)2CI|rS&FObBI8}&M!v0$`OYIyiBOKicYiAl#RH*Ep}d?t2=*70a!px^HOM@+4iXl zctWR+47AKS`)A<4_6^lk<l+8BleC|Mcoz!B9&9 l0zU&k00ICG01|(PR>3ZS5XAxj00|0{5CcjE2?GEC004STXPf{4 delta 729 zcmV;~0w(?Q2H*x5P)h>@KL7#%4gj-ra8#VXTLH2H007bmkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiaZ$v^_h{x_~b3j63P6MnknD0Vr?q%roox_+dO9uEQoB@>FAx zm1e6qdE5Qg6=W}82)3Zsn=&&`(!W53#b%93_Fx7*o`{HlR{I}+3W^$gN89T^<&vp; zgIjP~_Rl6GHk(O5zTEH1F`_UF_hve$t8f*Fy2OvVyr$0ZqMu62f4kEycj#^+n|w6W zQew~BEU{Y4d9?%2`wCiCg{t=Lt_t&F!1p$gs*Yo7qLgS1lM}ILV$1MJ(hYc;IPIuS; zomGACgKQG=BqpF)B@>;(1Ffe;Nq`#Yg#=_l1)p0bmh=a4jS0$`s%1b_@jI3iNRiM zOz*FWF$hDLSXfyuT3Qcl9X|Wfmr8_6V~hGBV<$B*@p*DL0&X^l%ulhD)<@?=ZvBr2@my#9x@vf^QxN_D)a(5f~c3ys!8g1-B?j>?tvoG7_r0V(C?Km zDKiKyKT_~ZXA&GP_IO928u13v%)01g1Nb8u9gzgq#a0ssKg2$LfN LN(S}<000008a8JF diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.16-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.16-legacy.zip index 4f1b5928936a4e67b9e0cd531b7d7b3de83ca0bf..7714ee0b787d9f6663e1a9d9d24994ca2a94e546 100644 GIT binary patch delta 756 zcmV@KL7#%4geB=hgL8SmUYbn001xwkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8M3ZO=6Q;??wG9wB} z1Yln(G!154bKQl1S7T~O(_eMZ(h8wFF)2?1qvt#Re{5{#bj*C%mO_C%+Hh(bk>PQP zAw(7L00{r-@|}e4^RSY z&BryQ;wN41|A~#x4z_jMONx_FYq7(jCwsA7QO&i~E4Dt;GA%e&_lck+s{cGQ-&^uH;T|~;izuQDo!mqd_H-7y@(43BduK{4mtsF> z6*t*lp=rcg4J~o%Wh@AA&IhaVqpHaH#9lP43)Cxmt>dOo59zWM~tsu~PT7DvbVVyWDV)2e=CW9LrGKSKPsfsa5 zjB%J7VG52&V3oCjXUL*N@KL7#%4gj-ra8%5`b%DA9008+2001VFJOe3_L?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3y&UOqo`EvEw_NVv4MwYz?!NvXXQ@EAWqSW zs!bPjcTW1%?qF!T)iI5f-iLqgXnOv5?|_45lzAwDveSJ5stNXxoX(oVrL=(r53l9D zXh{-XB17U!V%SHGzm?qeRT^J@=_A$oPvL66RiulP_{m$~Hh^x8aJ?0^-+ z5_!`!z+{`E7bwRj0F?L0+ji-OpFJmu+Rw_~-dA0E674+M5!YE1ZOea(Nua*y{!{ZY zJJ5U3@0`t6?FNGwJ-;Cf*cY#hYl~B&_WaBW9O`}ufq{_;5V`-xOFiHkD+uSpDXhD) zP{}S^)6F7&uAep`b+Spb=>~^VghfQmtZM}uKx?EDBIJKt9wRW46lGucmwv12BNi&; zH>XAhw|VhPEla6)=U9I(Iq7H`@wu30`w00k`qdpiRY;5t_@WD{^IJAh=hg6-i&}Qa zFI<#gZ*na^!)(XYX$0a}Zm3dR-Q?%=A++Vb_au?n0yQm*R1KRjdk~lzu@D7m^*@oB zU|7WILa$zP`FljdiSId{E}h^||8`4hfxto>i79%tnXXAcN%4Q9#|1$%Rd*(gT{>P( zK`-5E7+`l$J9E;tT}TL?g$4EH?I!Q^j@aiQHrA9rSI(SHsq*z-D*&__Ar{H)!*6&* zg#0|2naz%h#R;y(eq15L$-zh&>>Z>5tr)|a1`6a54&I}jwUQxdWfA92-3!mhu_nFW zF8qUwDjEO0na(x&QYle|w{B+F#0Rle*KL7#%4gj-r aa8%5`b%DA9008+2lPd#C2L1v700007%V`w= diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.17-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.17-compact.zip index 9345bdeaeb97c879208a5ed5a030690d8ca7f0a8..4ef7c1223e9d68b83a8875c961c0d1737b0e0d8f 100644 GIT binary patch delta 751 zcmV@KL7#%4geE>hgSZ)=RLs!0003B001VFAOk6pL?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djo{P^920$O> ziq39jj$1{ZU|%XU4Q5<(-GzTwV`@m#UvS%^_@jahj?@RGdBEs^&#>eA461JACvjy&UwIB`@xSN zn=VVv@N!HPSt|acGyW(T`q|c(2ibnQ)O!e+52B#p4@cSjvYSA-a`u1sx6i%#yj)7w zE&VTXoisPyKt%zuMmAzDJ)e~(OUw`phQ(Bw0tST+gowBP!Bmt7nix{{vw#Wn}8;Gd2zK0H(@dom%461 zZ`s}nGorl6mlz&wbvA!(q<0cKlweLiDC0hrqIxZ0vXvjkHmNLr?^p=L$78a35^IN` zu3Nj&?u9&qUp%==9qc~xu-JFJACvLb&==sggcTsuL)U}~42x2MK7$t{5DB?IY&hC{U9$uo zYD!y(0+`AS^wMWlY5RHx3;GHT`@8>aOjLt{|4-+#Ef=N961gZYwAeg6<6@9@yx5VH zf6@~iv7FO}VRAe}0~~h3U;US;Sz0=(w0m|Z#rzg94%Ho-kTyuphyHWf8Bj|B0zU&k h00ICG026@KL7#%4gj-ra8wJ-^p3Ft007De001VFFas%(L?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3y&a5ulR%QEw_NVv4MwYz?!NvXXQ@EAWjlX zM|yLl>^JS>a#5=`BlhN9jfH<7QE%$-jyBzuS~jzyw^)F1@0}=p0J6wlC}9e5lKWj1 zHWkeyI<0%rAHA8)E{NSB&wIi6kHzt{Jv+|2fG+NgJL#!LL$xCTC~xr0Gwb>IVLTnK z!zLZ_RAZ2pW~(=O+x^xRWG`O`wxHIVGBZ!ozd(h>W{pYqUU) zWbZwO_nyE^HQq^jc_il)p^oo^{MC_~J5+-l`(hAk`)vE{(<%y5R-L_prITJ4&^;y+ z_;CAOmol%fT@WqiU1+pq0L+)~06n~r0STE3!HsR-M=eH4-YkESbRyuH)l(EAIrirZvR+{H}MB4RLwic@PO6Gb2tZfrr2NEbwNIlI$#wtG= z71r#oB2KWXTP)h>@KL7#%4geH?hgSD4KXu9i001Zokr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8M4+cOV<%-U3WsX}# zo?u@pG!154bKQl1S7T~O(_eMZ(h8wFF)2?1qvt#Re{5{#bj*C%mO_C%+Hh(bk>PQP zAw(7L00{r-@|}e4^RSY z&BryQ;wN41|A~#x4z_jMONx_FYq7(jCwsA7QO&i~E4Dt;GA%e&_lck+s{<5g^3Sje}-5eJEdQV{EEDeKT9|k|s^T5jP|`LID+UBr_=e52k2Z;Sz&R-d0MzDbxMKjSObTjY%sh;9ld@V7f<0pl^<= zfU$Dp|ANcn>V5%{(zNDN(K%C00000a@KSq delta 736 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 delta 735 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 delta 735 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 delta 725 zcmV;`0xJFS2HXZ1P)h>@KL7#%4gj=sa8#4nPj;>X007Dekr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiS^Q@<6W-L63%-WkDpYjIXuwot+m5~5&knB;y^s?w7GOq$-a*HV< zOy84nZmbRM><@b6s9*HO#uapM3sdM%GPT1M?FGq!pv&)dbhWj`cI{}h0;?l+ULLhQ zcFPYh+J8qs)+9vSqU0qfX*j1Lw9I__3BZW-PxoOLY)f;0(@xwiVdU+5Oc9R*(f2QK z+hbWo4aTwYvMk|SA(9J%X})c32@6T?7T0t(MX_v=Ml^BXfFzfUS2D37aujPJEECIJ|N zi_LtT9*c1cdhOHB+>wH-DbeVvmR3(!Uj(h6fI*5E} zRs}#!-=YccN7|n<2wV}LZ`Ai9f+wJTL8nVHRzsyr5hj$qvS<{R!OoeOPa^7&G%q$r z=>Xp;(QM?)1=$`2!D0X4GFrS)O928u13v%)01g1Ob8u9X*iUw@0ssKY2$LZLN(S-* H00000r~OxH diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.20-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.20-legacy.zip index 1afd69691c8c52d69b5734c8580f8a847f517c88..88aff80a44f290d207ac7d09b1498b5b59d81374 100644 GIT binary patch delta 754 zcmV@KL7#%4geT`hgLoqh!M*I001Zokr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8RZXt&-u}$S9<>dN# z)E~Q&^Zf(5i&nFLt$Ryb!SUU=#~-!b{;*G8{E)YMW{tVH_w)})HFqu7Lt4EtU1}S^ z;Plp)_bZnS=fJLiBXE>a0{ReI48gvFW0Ir%{?bBngF#r-?f=~t$1B_RzInW%XF~w- zI}O5>l68zpI{Xp}yUzkT!&PWO8`DX>NJ`7T_bG%x*CQIhC z5nCs8DgU$X{G;}7ZDk14;%D0{{R30K~;>g8%>k delta 732 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 delta 732 zcmV<20wewS2IB@8P)h>@KL7#%4gj=sa8xGS9`UsT008j_kr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiffrzCAXcsXy=}lo zomrE)tyhMEmqJb_t zZvE1VTE#Da1x`4A5~6LDO>`}yeH`^{C9|jcNX@~KB3JrW9*8F#Di$7T0{(ygh87v+ zHzpJH7kzwqIwAa28IlM*_klyO4Ar4T=yx@)g?`IaMYi_nt`dkA!>`0epK?; z0|ozC2p%ugR0@x#Hb>SweNAa)y8o}H{CFciP=I%T?-~Vf+ic?54V0P{|DEm;m^{GF z4S`0DosX}tX5jSwu>M9yEFF1Du7^tgVRL8h=USBlfp&wr9?8qq9skmG81)xy9}iA( zQ%xhdf!sT)m!KSiB#e6NUSOP=h+RhhSg6z9Z}yrF$!o0okRdw3$dOSa+JJ>deo2LK zN@KL7#%4gec}hgN!l{X*aZ001Nkkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8RcTShZ7)Nk0^9*PE z^s_SHgs(xSN@z5H2UIwR!~c*5ZN9boT%#G!S+}`n-D|K(E{Hl~>e!Rb3w}1|)Rqfh zAn`hLmhdHyc-sgz&ue^#`6k5A<>^iy2YvgPIDOMjP;$&Lmpb zt1W>RAmUU5W@Eo8gg;Z9+uFq8#pp|w#jhoQZJAeQypM~~sx0*Am=i~(@$8H7 z>g&=I6b2TALrHh=Qt=NM3d6D|*sd?;7@`a z&C@fmjOF_p5E#bBr2-6WSV&8Li}5fY#xY8GFKH)TzcE$My#7uKi?-Qm^p4Mjn_|zBl7g1TZEG%P0wYj9SMK=hWdzz~!1@KL7#%4gj=sa8zv=C925+008X>001VFPXj5DL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3z1P42^w3&a9GYo4?(7-7{zR2xaNf`n~)HS z>Myae#&FAhyX_Y_Y*I}1Tl9a5{r6M_J{mLtjxR|@-b9V&_M*359t+_V^q3z2nnovE zg|~??g2=B7^F?W1G}*SAj?ZX-@LFv~|GuV4WN+EEbncTd@>+f$x2OWeyz$qA@GgG2Igdcmy7G_rC+ujf-qRb@CluMmU(|Cb%@KjB!X zUpfW=k6+SZx`8~1wr+o47j#JSZ2U0?3J^l1g_DY#;0Y0aD+dyA@t-85R?-qS0U~bm z-9cg|u(IpS8wx9~{i^L!pUR{wND}#fC zzuEoKurBVX0VRCh%BhFcgKa&nLFmO~xp{h-1~#4>CQ3ZTD36AS83-8K~~K@`!B_H(+u|H(1Sv_`ToevOpl zM&tzo+-}_uQX0PP5qJ_AYy4FdoG0015NXg2@= diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.22-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.22-legacy.zip index 2bcc69b5b39a0e482c578e7dbcfe0fd5a3f15daa..6b17dc536d5c7dc8ec430152050ed302e0485859 100644 GIT binary patch delta 789 zcmV+w1M2+#29*aJP)h>@KL7#%4gec}hgRUz1^?#)002u0001VFKLaU|L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djo{Q9XPM5_P zM{qFn3}^fFvohd>uR*3tXf%HZR5*vj|Bwc4)@>kPOeK`Z$ck#J==Us5*17P1e24&& z?hz*vWgdsk2yFC{IrQEwaPJZxVr$WcMqlKN3 z$OvAf8aSOCHwhvs-P=~lP=%3(Tw1mfp8#z@n!GV_Yuz-P^PA1e^h$q=4g~42EP3^N zXVDlDWv=D>!>v*5+JCB_mRt$Sllp$9zB?VxP+HCnJ7M_xsgvXV5e^FN&!Tev9lQeu z2IZFXKd-=v#d^{KG%W?TJUt@GpSmw%qR3grGiB~2!xmH4SJD{wy~rE*75+0Qmvxhc z%EY*SUkq(gGv?)3OvkeQo9RC`}+=*O{=scO{kUXnuAs_g3yJS=mr*Lm4 zXAhx{K`hP;sXt=!^aaPJ!OPXGT2?KvO4zVCL0-R#edL{*2pp(n`_c*MEayrC01z-$ zA*nC3_7E!3{`na>Xfy~j1k@$x7G#iD9-aRA305#rO928u13v%)01f~fe}`7!(*^(M T0ssI@3X?7aN(L(f00000N6T(_ delta 759 zcmV@KL7#%4gj=sa8y~>pv%w#000yTkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiffrzAkQMJxV-ZoOD^8EY5D~xMD{1kL1{Wl*H2rd7js%IrI&Hg7Q-a#EyOhBBQXD|< z&k!Aem_khH-7X&}-HNujQi|;uiEyLuqc31~inr;dA~r)|Nak3%((7C2Y%_7l0rYzw zf_=^|i3^Z_FohdaP!yPv(m3g5TB=B>Y=4veF24bl%66iE5hIzm6;=X~c&5lm6!tKv z4*1KRLrZCfXP+qfV*tZLC7WN%iBD|x0i2oTA4&2#rc*%2eoK%aXZ_YQOS0~}xJ@N1 zUu?3bnLL1Q9BLSdKd`^~v{GrJPTDPEuuWE@+Xe1_NRjzfa%7?sSJ_pqUDjnCkR)>5 zCaKtuYx3+|E7QrJB`Sa??G0789KsE$g8SXRfE-5T@i@N$d8*_v=TrZ_B{q=>v z#S<7y28V0zU&k00ICG0JL*(R9V-c%g_P<02B$6MFUC(6axSN000j$XT$&i diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.23-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.23-compact.zip index b6947abb798f14e4c81b28f0dd38eac7fdf4d20b..b3f89b2aec9ddc4c6a741230df3bbd9df4483390 100644 GIT binary patch delta 774 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 C+IX7) delta 759 zcmV@KL7#%4gj=sa8&LD-EYYP008X>001VFOam#AL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3z1a)7ppMP)s>ApMP`08^x!B>(u}XJjU0J0 zstAFp_@cabZIb3gk63S4T=su7@!nTWYditpfDs6Mua@~PT<_%yLTxQams2~lYTZJurPw3Z}A=HNT7fJto=stjjT2o z6BL^KpQg@MOS7u}N~XWS;1Xu-iybD5HX-gW^YBKKDG+VyZ#LO|a)$YLU!6g0L`pwS z`ra}`2%oBdn6z5=m+7)vN zV1ui>jcH5+a>BuRbVZ@w_jx}aP%CUPDzh>De7CciS93uS(~!l$?zF_P{uSK+a4hcOoi{v6V|#lO6ic0JU7fc~ZJnv?0&SB? z2l(@zQJI}%W=}*L`&jpL-vHCDBL@%&7rHkgQG!C-tl+Vs)(@KL7#%4ges3hgP;y#mnUa002u0001VFK?5m~L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djo{Q9gLlE?s zE^Gu`r?Ffw8B0PB(|@Od4Ml%A)rO|Xb^La9W6=@SVsw|x__ES2CO=7g8$uP1A`Q@W z;kUZU_)G}K36S7tlS7{)LT2z0=jP%rN822G( z)Tr?`K3(zwi#o!)$d{K1+EwUd;>)Kh3|AR4`CqjOpX}kGH>QV6{5{**kT$beA6+8U z!fUvH@l`LWR!y&n>%%pb33>*y)pz_<{$^xNYKq<%r!|(LbDr?Huh12qyj``4UnqC< z9AUuQaSsk$n`&oF;roc#drzxb3W@0O@Jud z%6Th2p2(6804!h|Zn+TT73DUFu+=?fe0+=}bebHG>~Sh!HZmSt?~tucmeLr&jz@NB zy8+XE#Ol=9oAT(sWycB|P1GhR1?ggi?cP_GvQ86ecFVnH<9dHY9$^4SuR;IQ*j7G! zyIDAW%oP_n1}eab{)6E}IcnAMS0sa#nD=eK5vnw9d~Cv(*+fkgqYI4D7mJJHh}FrI zR7O{t3?QGnQz9)d?0oyE!4tx@r^hLf%3!Eq_X|4IcV`{JmLR6z0UHY<4O~UY%K6yJ z-^Z>Zfw1)PI#6J23pzs2V#UA5@l!36txFm&O~PZwPl6G*%}t#IVWk=CRj;3?y4tY| zvKFF5O=DGsenH9cOK$IaieA@cFwiqY|MJ`XHc(3e0zU&k00ICG03d&dR<=^b%jE(9 R080v!Fat^kDFXli005WZaJv8i delta 761 zcmV@KL7#%4gj=sa8!7{bSKgR000yTkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei3K5I|4l}lNb}W-qhFjeoq#N4#$ciMsJ4$j1KSuiQcE2aid|TpPN%NJqU_f=9>Ov zD@k&ux0adk>(L>}GMswaD7Gn8ojly@)Bug4v3-Psv}8}NK33D`xrU39JA7XjIP82T z#tGyl!XIFN{17(0GcS#jRMDFo)L!l%51NUtYeM@VTI{k!)AgBCPeysvnd6O;%n0B; z4lQ!#zGHFv1UU0`F^(?3HskpFZ5RS|hsj1m;8dHV7KbMfQkS$L1#uIfwY3_xFEt1{z^yRm{`*k@KL7#%4gev4hgJr%SVY|d001Nkkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8RgzJ&9k=l_Lu5SZX z3;`~pp0!n4pvkd+y=nX3-fazBx{1=KY*TDhEPcRZg77z1r0s%_IaEHB#k7@ckzHVj z7V7LCbGN6}#M_(8J2tOXo>vj8kw?x&g)dehcN#PidkH;_X)m=Rsn7FNzQ_$)z70qK zZ%>XMF{AvAn|pA0({C5PEcN}L8^r`#rng4w$RRrRd@Vu1p=&8A=%i~ zFIH8HJm}Fk^`6}UIGVmCYrdktD1<<*0FWQs= z(0^mjujZSna!rQ?6IMVY;`)WYTfLc7?mn@d2&vB>>?a*Km>gn19iG-!vFoiQO z_(5q~RUPzy+_*3KD$gTE`^St&xI-(9+w}~YbX!n<^Jg%yQBSKiR0Kr9k3SN!0(;OG zvjUVj#Rl5Gm;eO~Km%jBNnUtkrI}JX0=@)f`T`!Z_qSnH(^_w1VcaRy^z^n5_JIrx zw3^fkf`_o8`!u}OGf~ox?eS=G=2Kp%=y$V*2zEn%pRk}}WylNtHvjhXvPLr903D9d z7h~QQZ-}{3Z6|_shv6%?wY1235zdI|q^wk8BD4O7S|v(2f$bsoB~X%%Lww7C*pY?Wr{gUoB!t1rATZXcrU}ZU z*ClLNiO4?TLJyxhK{>tF6)djM{23~ik}TX}p3Nlg4Un#Lz-D-Dl>OXMJ1$eVc@~e^ zn4+eFXAhxDr~mp%p;=H%0Rle*KL7#%4gev4hgJr%SVY|d001NklPCj91|b6g0000P Ce{n_t delta 760 zcmV@KL7#%4gj=sa8%6|sxHa`008X>001VFOam#AL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3z1g^+1WszEh;G165j4#qQ=x)>*41}U0?%? zxzvzfGmVz_kB&Css!tL;g)Dzub-yKru+1JQ1`H%e1s8243|IR8!(CU7!Ip^}D!0fL zj()=lNB6@qo_D*Xbx+;Q(B=lafEU-K__!ohro>zL4u%G-v4J=YFAu%q0%to??);97 zR4zn^2bYTcor|*&*6ak*)njc4IW+3d21mv=SBUhsLtx=QgmD6uV5fa~LV7<7qBLsq+$Q$L+!Ju#$ve87}#;dY>jfWU*+1V?kfIxN@K zTVmb78T?}VS?s534pLa`6HI+EB&23;){?|0tYF-n75X%@8DrSnd-SSD31?L&tX4_H z$(wmAglP3m8$emfu+cRe^@^g&MBM}YZR>II_?_?W#bGzJ%9wwUxtpng8r{6mZz>Xl zS*35~j;%Y4kcecZ#C3Jt{??0WFv1Z|c)mT$IXoGD<j ze9R;|ifzJud1O%8FqaAB>WO^H{{c9u*gMZeORGMeel_ucLNb-rU38esIben58r1|k zp5_A7Wl<3W9mYju&M|26dX|8^Q2R(v7XBF(H+Hu5KvQ!}dsc^YR;dt#6!kla>;Jy3 qM!!%?0Rle*KL7#%4gj=sa8%6|sxHa`008X>lRE=S1`Y!N0002l?`pCD diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.25-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.25-legacy.zip index 93ab79e624aca23e4fb57aa92d1ac120d67f1e79..2068617878f48d4f319964328d126e284a4b3637 100644 GIT binary patch delta 787 zcmV+u1MK{O2a^XIP)h>@KL7#%4gev4hgK`!f+yty002u0001VFK?5m~L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djo{Q9k>yfdM z+L0HoZv#~f0WPARwN+Z6$+3UEY5U*aZ4F$yp_5BO9}}MuSPe-Hha&)yCG{p38q}xW z;nT*3MX})>MMnpC&yLwRJTKqKDoT`SZvKYk<+V@txx`d)7|y5URQ8vPHIlICey|B) z$(xEbvGs?tEWJYI%zasLTH#R_uP}e~3QpMZ$Dq!0z1T zqT|?eX+*!1e&hIu)3hBsmp7&G>1vddO@6X~OG$;KJ;$(sK#Sf2UMnm+cfCdL>tA4R z@kG+$W-F%7a&1sZ1MCy=F@#NU9VOw)yBc5h0y6E-QE33i5-)$NlP@G=B@e>h(XW}j zfz0f*_;aY1vU>x~jfcCj_ad_|5GI4krgN=ubRs!IY%p~uC>N3g-}}UZrUF$eqkSFz z{h0KE-jFNTrnJ(j?vH?olNaGEfa#BcT%fzQorMV&z+({Ujlv++tdO@VHn5c%VXNNy zI2$Uym{w=3mlR-E0X9R&v9hrKIk60tlZQDkIKUwg%H+bf9?|p;kFm@KL7#%4gj=sa8wkzaca^6000yTkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueilUrM=F3Vz ztq*xUvy-|YsA2Oy&g!V;q@5!E?v~W_9R+lk%YWbVwkylK@WZNf&pM%?v391Tkba~W zQ4sjMa%|qtD;kaZ$~d0{$v99KuoSlmUbIaq^s@LtyVDPU-{q#F#o#n?|5XJsbV%7+ z2^cR*b(20unEy=Ja8*`1+;PAxah^4wsP|@Pxh^2izWCVgFOqL#A(0ApxEEp2rvJ4? zcXGXbI@Hlapi13%;alnHHGmU9l-TvH9uoVCRfWhI+?5#^J#K6(LenR56QU+ZNGi=t zqyBt>iOrvXh8IZGN7;QSJU|ho#|1en$`A*u>vt_dQoOBRtkqdiHkjA0-?4@KL7#%4gey5hgPn@C<5LB001Nkkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8RiC{)*Q;??wG9wB} z1Yln(G!154bKQl1S7T~O(_eMZ(es*9w`;`ZW>9SN+A2{N$|K^KyyiZjVq&hT_%qci>}82Z`Pmj~H?y3~6Jm=B_$;15UH{IZ)sxN`P?_qWfz`Mg|8)-C-nas!2n z941j(QvOF?VQ8&~#lj88vtVUN*TU{tl}?-U4Hl3BP7P$B1IOgo$4Ako`Qv@uC>h5{ zVg)|n!(+m1QVO|L)wB zypW8tA^#_TTOC~;KwC-aEMnkkMBf(V0`w+B08p^)W#{Qt1vkP_rhs}YDmXo51r`Uq z=l%{)Bvl-4F!}trhiR|8=zZ`TR4!4XNLuqu{DM$@7k(3niyGH(6neA$*ahQjVhM@9 zX_1Dl`b!LxS7xg6UFkE;{2Yi3hG4r_7nsp#{X_hJQt@@w#R2)`stmZK+Dz%bw!`EC zPi|FazJpds3VM?z$D>^vgK0K3yeRPXnVOVKQ5AwgWn`xiEBrh835c_%5|1n_3O_S# zNN)nN5O$ujK%9KGk_(K4bkFzeJoTi_>mCTZ7%8`d(}sQyDK#y z9bJ)Gj^7h8Txp{M7E90@(_CXfF^4#uyBv;{`OG-|W2P9=SaWRsMg5S-s(1R+(?W@`e8Rvy^R6O928u13v%)01f~me}`7Cz$gOV0ssIc3X>-TN(LeW00000 DcQS2n delta 759 zcmV@KL7#%4gj=sa8x!ToYu(#008X>001VFO#>;BL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3z1m&qo`EvEw_NVv4MwYz?!NvXXQ@EAWjlX zM|yLl>^JS>a#5=`BlhN9jfH<7QE%$-jyBzuS~jzyw^)F1@0}=p0J6wlC}9e5lKWj1 zHWkeyI<0%rAHA8)E{NSB&wIi6kHzt{Jv+|2fG+NgJL#!LL$xCTC~xr0Gwb>IVLTnK z!zLZ_RAZ2pW~(=O+x^xRWG`O`wxHIVGBZ!ozd(yOMu9I9l&BrscQ=1%_#<`@yBkEV zl@i-JOWV0`o6F_DzbSd1knGieN@UyM+qd$>vh<9;Y4}?Ogj?Df+F&HYv)>LG1lM1` zc-Hl)T(Iw{)$u6GFjH2M4>PQxK{2J0{8WLG(GIg4w*aHJWh4~T#H0M%TPwfUYE>kc zq*>Drp6JdJz5>89v56QaZ|I!W6)F;+ol^=Se0>TAOlE3JBXQN1XYQ` zPtWE>=fo82kO}h@zKDk$;b)M)3rd5n-Qh6JNMxXnYYs#hLU5}juk6Z<$K%cQ9d=cd zH0|`M?-KUEdHy9*I}g*Y%3nr6odj%yN=qqiwP6X@83DhGd+LAka%TC*#9)7!O-QCP zq)_-vpi?KPOpfx6q*)a6yzB(&6g1{?(2=$8!d*Hk@y)Y&;9dG<+sb} zh!xaz_QgU|ad#Od3~1?9jcxI*%ZZa$K-uOPe{|6I5N2b2dJP)h>@KL7#%4ge#6hgNXgQyS(1002u0001VFK?5m~L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djo{Q9pU`A?F zkf#JPBMM0bU|%XU4Q5<(-GzTwV`@m#Uv2D<2>NWQYWama3C z5Pb;SIIXqK$2FwlCtdFUiH*(I^#azBfSepCg0xy@Z{tnh343 zK?6|nD#L(6Hs~fMceew;{tO?QODx8njSV*x$GBnQZ-D6Gj5j5}5!OkE;Qz}5ynl~p z0#cVWeVw^|PBp@03_E}8KR^tI3is>m;gG3FJ*woJ8Ctrv8qj_9g*hQM+vXrspZwA- z;&N|C0tD)9#A*s_Zb&UvvUVnz z(;*4lEy8DXku;{pD7$f<(JJO|vyl_7gSnysROtMpo_Y|2XSaV7Op|&U(z2H&I9QhH z^>{K|;C^}nYAzIDgHMlPi?nGHyD)-ks*IG!`#!tEv3~!VeOHr9z)E@KL7#%4gj@ta8y3D(T36j000yTkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueitn+IRiy?Y-(m{{TjIa1mSeLov^z_<1TAjlF+0$E(C?rU zC7RcrUzFZ%v9urskCHI6TusY5Q&g&2m<*iIf$CrLiZ48BY`$&Ni<;0`H>!1g_ULTu zQ^EZbdm`3W5JjEvBGS4zD-tV@OI6GHrdTX7$D8q-OUeK)KS`kMliVNTxzeiB_JF-O zCy^^bZ?xBcoZV&25Wsz&m-Uw?I+CG;ZN{@99^_e22DO6+_908~Zeh@AZPG`@%foJU zP`~AQ$7Jl7JN+Rc>msj123^gKn}IgXTEqaxc4=jb4JfLJ==d#NhPN@EdS<}*)GO)Z zHYoIj+luX|0M@#&;L#9-=!1Is!_JE21|o&wdm}`Dp;kfwfGr(PQ^=~G@LxJxb$%)q zqi~lYnzLBvwuba3?_I|2%Xwm1t0DomV+8`B8-VHYLWNc$&9g!{C2gTAAXeZWy&R6z z-+er`Bt}!>y>H6e9qab>^1plWhr4q?P1anhI}fl33Q!u*nJcaECl8L_ZR-TbLYZdF z{ynNqBiq?2EuLbvQ&CQ%rg$YFfFCg!3e@>@O1=oOM<=dyXl@*>mMu#SSisC;!yEtV rEK7V)O928u13v%)01g1Pb8u8Xw9$sr0ssIM36n$vN(L4K00000Nndr{ diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.3-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.3-legacy.zip index 84389607b971771a0dc6fc1de303df3e283671a1..c498a8bdb2fd9de2bd51d6dbf475342c2bd7384e 100644 GIT binary patch delta 616 zcmV-u0+;>M1@HwJP)h>@KL7#%4gd&$hgNok7Y9ND004&vkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8ZUo`b_>ii9huOGh- z&TTQlk90umeAE+vH$YdB_0->WfWux!o-CZ0C`AO4ZPrf=1@Gl3{KH0$(os7^!d-yy zR}LcF?RSHbA3{OQCOQY+)7p#WlCu6P`8Ny#u}&1fAbFjuu)JZ&{YiAsN+x(5nGCiW zS1GrSklefx4dQ-cB_cezyYE6gi3BA%H}>nih+P>vSqzkaF$+C2@iv$-|5LNo$kGHJ z+Q1-ax!rK(a7_zK__!5-QuxWwwRHT3EL)LYdoNlgM^%?0jQsfgwoSZlnUVuh+|Q$0 zRJgX=aDn#vEuw)!iOJzc#bHLSguBR7fcXyxgtyx}yLG-$cnQ@8=e6pKzsMY1cKzeN z2s%pZ{IynpiS5MaJnebufYnV*0s>Ic@ev&t8Bz=B>z%~TV2d0CdY%|4U7YnwKSdKI zb3uXqL+k$yNJVv>8?I3ND~$j{9bY$tPer5EWTXd-G`KbnHTDgjc0kcn?0Y=#o##xz zv$Mz3_5=ql=PU{1HB6Sh;iY5A;i5r&EB>?W~}JGiB`vsum$7?U55h} z1Pwbm0N#HSjQ{Bs{Y+3x0Rle*KL7#%4gd&$hgNok7Y9ND004&vlY;_E28IFv00025 CO&(hS delta 594 zcmV-Y0@KL7#%4gj)qa8zas?wch7004~!001VFu>vWPL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3zUEQl>Bmu9-=d*6} zHLl53dGBvll&I9OawApg)zfR4f%PEr8B(S=7%)GB+|4m!?s7rvU*&J{&hKN+jc>) zs?q^{ActA%iP9*E6?n>5hlM)HZgkuryZKgNR$6LJ35au|cgcQQ@f~xnq%gnI8|xsJ z-jn#WR!{w3J3LeW4^SNrv|naWQGE{lN2uu4!}%x`RK2ukF|5^hpj&TYDlo#fuGmfq>hKr+UW;U@^F`C; zQvRb7IlX6v?jo1RnsxE86miM;rSsH7i9{z9d#P)h*@KL7#%4gd&$hgRh^_Ygq>004&vkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8f5i1v?JiQHdR~sEK zC0SJ@*jluG&5c8U`DwtX$&$q1-UmY!%Ya1kvUSwDDHEyodU^0dFn9(GxBs`I;>^uy zdD9w<_)$OG@Jj7qSj%b7yOO%)qTDTPRSU6|xYLqe7@U;RCVgeWR0zpFU>0fybI*_n zBfx|ECWv8nLH7FJdFvuAlL5GFwug~!n7$pa+q7VrLn2gvfuV*s0D?6aSvV@Cr6+;u zeYL)QgWdhI1`)7*7pl9`bXHKL@_o7wJZ#u@ON6WSRjCs53<2i5YF+5QjUlWtS1HA5 zfhf(IJ{o8nE$gr$5C&7bD=o^^FWal@B)CoeDPvb5SgNei?b~4}J6X6Y47`Wa8<6|S z(DjUBCI%jV9ncHf1Igaszi9Q#t}@!gD(wqge5DoJp1q)$E{ablX{V1jxJkh(-YP^1 z&jJP?b&lFCe<2T^H>H6BWmzU|k!?S@+T))z7`!>!3#K!#)p=xLFU;3p@~U}*AxbZv z&X#&>4G6UFd%7$-BOD|*+0sh6?7mAdmOWVh+iGV!c7&vy^vU?4k)}3CD4Op69;zt0 zV^l|@=@DXi|F(JK5J3U}0EY*Yg#t delta 596 zcmV-a0;~P+1=R%`P)h>@KL7#%4gj)qa8%}F?1m=-004~!001VFumUNOL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3zpAlUSlCX@E=3Y6|;=O2X$JEfIpnUHiFU0 z^guf9pi3~YX$98uZFQ2BJ&k`R&I0GY<3?W1FuoOk^urt0c`eL>b_ zQb8P4*AO@#sI$E>!?5c*%zZ#K+ZqU^H8R@G-q~;oJYuO=1P)favul64>=W{Uo~G~p zAkzntms}tA>{)*yQW0x8#TGAvlDJU4?p42lnj10;D6>0iGJHPS4N=rC+kPz98XG_X zq!+o=$>7WcVx&CV?5wK%Cr{|E)%5$zK}foW(5gCLuLwm8K!1UZFRynaX|EF@)$+AY zoTd%^(RQ+~N0Q&9Xo-JtBYZfB%*L9E@ONBSK1`T1)0E{FcKfXD0VC=ism5_ztRjcX z*ZQD7ZIu#v4&_U>PEw?Vq6hC+%8s>?{wO;?PT?mB`we{eP1@HwJP)h>@KL7#%4gd*%hgO7lJrqI$004&vkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8kwKH<%YxJK73-&{} zI}HIy*`M#-e`>man|3OTMro|ioOslQbwTIB9TSOqMgrQ9uR3m*(1_vfXXTYRR&!Ku z7;uTeJa5ZgV~t^kc(|`9FTL?)>K2aAF_b;yOXDciF3)s;T}_fhEpaDB)mRr|QWR~` zMB}InBLdRXZjy#Iv#rXaee*Xk11}L76o@CGn{RzP#JJyoZ!ZHyA!9?)Ut@16R=5nH zV9AA{f|82OpGoR<>3=1gkZPK2?j8)!Gt!|l8cWYtYdD^)Xs@n6ud#2exjCq6)Kn>p|9RS;H*L@`|H8aN_f!r8u zv9S+R5j-@19NE7wH{$=curs9EAKI@}^s{_s%ccTwhdjGb&QG-Y)^5w}S-|UYw!c3S=m}6u0Rle*KL7#%4gd*%hgO7lJrqI$004&vlZFCH28IFv0000J Cb01Uy delta 597 zcmV-b0;>J+1=a-{P)h>@KL7#%4gj)qa8$R(0U#&>004~!001VFu>vWPL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3z-=YZjI=cpB+RznlQ4Md9ft}AJzRIQ=ddvCT8-7ZfpV?HP%2C~VCL-A;hV)#T{$_F0Mt4bZmj zBo!6T;W}!d(iN1|Gm1?8-(ZftydYvxHf~*wTu$Rp$5P)Av(SEzf>{TejEKQPnrd;2 zIig_8kMB+rak31;z=(g3qrReKM_u#$Y~5I3D`6XIdwP{_j;R-m1@(Pqorb|^Ko2?u z#i+)fKGhaW;(o%S+hGr+ANHOu9VvIdderW+Bx^L@ybe59oLs+DS|f9aYMMvauD5#Q z3n+}s{S5?Sa3K@%+d&?ytH)OSQsi;N;zK}vg(xyUH)lR|hu0!k{28JCw*t*jO928u j13v%)01g1Mb8u9*#sMHG0ssJw29uxyN(O8K00000ydV;W diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.6-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.6-legacy.zip index 3789051d3b95e882086a796ab40541e9a3c8cc89..c5a704fb689c9f68d0b6e6888d10e92decbdeb44 100644 GIT binary patch delta 616 zcmV-u0+;>O1@HwJP)h>@KL7#%4gd;&hgQ}54WB{+004&vkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?9G;8q8Ydp;HmSlf`F<)O zVU@J?&b@Yk(q%b+qczw3NCDE&kC9Bg6J|9c>Zfd|FGqd24oda#@;acwr=VFAU;HUP z8M7xg<$>Pki>((_s#T;u0H#J|xLVB$4-Z4O&QvXX1xZA724`#L1;Drm9)eGj8)$7S zU|^p&9Ml4`cIQ|i!7C)ntRa3(ypw^9XsY`H%6k9q@>=tMVA|l$BdRr~J1RRj-ID>& ziRH8`X%3P8?eiNhK2Q-Lf6Nd9#)Wl1#ua2mge?+Bx=R}n@*8R0#_d!MU{6hk5LO)t zbhQH_@}R@TU0Ld9-+>>FgKh0*%bZMzkJs9ZqpbuumHy~gWGcl|82j39wB|O}UR+)e zM5s1NxJ62TwcW*EHjMG)Ae%6^6T1MUdy_d*C+&)T&o87%TZZ5*P-iXQBA%}gWjE%- zu4Tj)f)cX90|eJCzN7_ZUDL;?HUJ|*W1SLOndIYlsYXzrPjrC}_3zcdbMCLXD zL8q@{g{W@cAPbj|P?V}%_3gM)B?=PTi?fNw84s8|#K-&J-tE(%7Js6)V(Y1s?_9e{ zpoV^n&AaPy0sm6{WdKl10Rle*KL7#%4gd;&hgQ}54WB{+004&vlZ66G28IFv0001~ CZXON* delta 596 zcmV-a0;~P-1=R%`P)h>@KL7#%4gj)qa8z*7#0Vz>004~!001VFu>vWPL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3!6zM{dK1EkL>#4E)m&>BEC!rFEA?pTC2aA zzYp}4)6t~1aN^0_45df?BnyASg+z$G;2v2MVZy%*XnI@IXQ8IX)#JKRlBgbf*7H+X z2y`9^ePX+70Re6Vbb0k4tn6yVWi%d+JMn~&8JcY23aI9|FK4dwVOJY-_{Or31 zy&CUsZ!$jQLPt)bq9N;{nCrOCBs;KViU>L56;004~!lb`}h25SNU0002SG#M2D diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.7-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.7-legacy.zip index dc15b8aa5b21ef3ca5fb9582ab0e57ea15b0ad05..49077e685b45ca835f87d243cbe5dba91e511a29 100644 GIT binary patch delta 697 zcmV;q0!ICy2Dt_sP)h>@KL7#%4gd>(hgM2l;9H9V0021%001VF;Q}dc?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djo{REq@b@Mv zrr=qOZYL^R&Hb7U*%FS7kwkw`jEGH&a<^gm5BTBUb2TFBr);P%M}4>sO7-yaI-tR) zpji`N{3$*evnMv?f!^nftrt|PRir)urbcDBTFnX%4@0)jR4sc2Nknu8XT)2fFM&+G zf}BHwI(6;Jh7=(42pczVOK1Bh&ZnK@MjIfzu4~}+Gny(*wv6k245)wY^tMwEq$jqs z2l83haG%ehuY0cCe1y$fF6M#YmTvK47BbU9RCRvQ{hCTc`(*i0`EQIXq<65P_6AlS z2@fR~i1~TEZ#7V3Glcg(r+sH5qX6Jj|j}U2gKNrw<8z+c^CMr!(;gep(4ec znEg&oP0Cn?*-<`Je58NqW@!PivRz3T%|51)Mrz@n1{ZT9%UBr*(kHpo=p@ke@^ne2RPjYJ3SJ$wVXtksYi{NY~R5?zeoQ!O^Z!vqAaD_muEI zUAS<$@3spkFw)m7;>Ta^^(f58IkywpD-HzatUt@XtPJg{U;oX+w8>CQ0Rle*KL7#% f4gd>(hgM2l;9CZZ0ssIx2$RqPN(RpY00000WWY|N delta 683 zcmV;c0#yCE2A~EQP)h>@KL7#%4gj)qa8x(zBXDv8002J+kr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei=KXc1^N;NM;Vu!`ha$dA2rn=y{#vWQnZFP8mDACr zws7Lf+zh2h{Ui&2!i7YLz2F{M6Jf%?3}|{=(`TWk#?|AxQIe=0de-w(SO|0;34LO_ zYXJdn1ayy0TlOtKgI6o9I}VE8u=@ueoFTmD>kz&IIv1oFz^#6HLax6g8anDA}#qznZQT_3=TsO7W) zNXz}@-xQChA$oc$w-u)tna~8xm4UjHp zenpu?JXq1)Nfe5W(^Y~jI!1D9SFz6mLdOLXFXYPTQsYws{>1m!FZOA4>glo1(vCyi z*d<>|a{crvVzy9A0Rle*KL7#%4gj)qa8x(zBXDv8002J+001Tc0000000000004ji R0001!`~o)ywgLbE000fsIH>>t diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.8-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.8-legacy.zip index bb225993e13ee35f91baddf0a0f5e2b0e2296441..3ff71cdcd864bd7b1a2c0b35ca89a3d1468505cf 100644 GIT binary patch delta 696 zcmV;p0!RIy2Dk@KL7#%4gd>(hgO%N^=*m*0021%001VF-~uU;L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djo{RU`DbnR@ z^q&U{_CvTk4FO2mpYPp&YPx@$b}EZTX{^tjc+`b;LFd686N!380@{$TI&PQHh~e#L z<&`*Ab5w5_aEZV?Z_8a{jbVm(xUVQLz42x07LLy`ls)51<0#ZF&vbxYP#lHJ_?0`l zcD`q5lw<^0EP*lChr$jhY=>ecq~8ul`P59bUhALkew{?VKWUi%x0HX3Dq$pz@Tf;) z&tb^0Z~CmlvHJd)2rrp*4%(+`1*^MF-y>aV3{qya1LZ6NmdIQ@Ovh}eJ)-h(Li2vq zd}qJ(n#zL!VCoMEJnbxm90*E1I&|nm1vbaD*L z(j#>u|0k`(*VjQv;Xi-uA=6X8pk2zDcvbV10_ifMDut&|2*I51nW>#PaesNlkUR|W zo(N%13d-y{cvaVSx+D!Xb3cE`fo}?S5(ikIGaS!*9Y3de|N31_FHlPX0zU&k00ICG e01JPIR+pjmZHff~0021%lg|Q52F?Ni0001t6i~nb delta 683 zcmV;c0#yCD2A>8PP)h>@KL7#%4gj)qa8v}l+%s_k002J+kr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiALUk`i1zDRoW-oL zT!#%v%tjc4?7X>up6XV)fw9dq=@%3+ZS5I}aVTuf2;EMA@lD+Zx4X5nA?-s4AAzcj zE;59TuyP3R+_T|?kZP!F&MmC0kKgvY^5CspF?JLw(V@^9t7fl`Higzn{=kKlt+i*_hLS$ zZ@GphyM_~0uwMkMePTRyem^q~?p4XHC)DeS27T^M6FYpe>N+AD*J z2v=zm87u04IZv$=l5I?$elxyZW;t{_X$OTGX$M9zR^N}02iGKAs0Lg-^(G4sSil<) zik(zGf^;9PDdVtXcrg|u`(Og?1oHO4wSaZADi36_=~x@*(DhcdW9R}A@kTzQU*EF_ z^@nEtnysvu!0~b0lFG0;*%)*S+Zi@|FJXj=$yjZFL%8=_Zn25O&JB7~TPa#(rp}Wy ztf3_|UT0!Gd(tKxC*|~Dx(ob1|8NwMExQh19m@jBWqdj7a6yaZ{YJWdN`yat%*w&L zWGAb2|LlQE$52ZF0zU&k00ICG0J3v%R0O-+GjRd{06zx+044wc00000000000Du7i R0001!`~o%xwE_SD004_mG(rFX diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.9-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.4.9-legacy.zip index 9a3eed5113291f944f416d93f0374e3ce541e9fe..5e776960b1e7168b35efd4bc690c2497527c226e 100644 GIT binary patch delta 690 zcmV;j0!{s!2D1hmP)h>@KL7#%4gd^)hgOiVh*pIH0012b001VF+yW_)L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djo{RleiPGh3 z^q&U{_CvTk4FO2mpYPp&YPx@$b}EZTX{^tjc+`b;LFd686N!380@{$TI&PQHh~e#L z<&`*Ab5w5_aEZV?Z_8a{jbVm(xUVQLz42x07LLy`ls)51<0#ZF&vb&+6h(9{St)Z{ zz?2lP;Nkhcgm`~LCa7;aM)=N4i;Gu!jU+78#onV4jZTvBZhhk1YodQ><@bs+$PlO1 z)PU?^WC-MW zY&u{I(n?)mdP=yYiu`}qE6{A1|5(?b5PFOYp@^c%&lX%}Q@*pLAyXzrh?itvBv zJnVs@KL7#%4gj-ra8&%O;>>LV001!ukr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiALUk`i1zDRoW-oL zT!#%v%tjc4?7X>up6XV)fw9dq=@%3+ZS5I}aVTuf2;EMA@lD+Zx4X5nA?-s4AAzcj zE;59TuyP6Wf}c`N6LeWmWu{RL?Yx6;ZI3yf87ELdm`0X#Y%__Z6<}B2d>Xsie0$Ud zc7+tYKIcQPOF)}Dm!Q{rxR zte|WJ(OTL~1b89iE(z9*Q?`_7 z!MNkvU0CL?_c0CFNtbi(Flq%rLx0hTsUDR^Ju<9nj*?xK%grFn2O(C^7_X8Qwh%~ zS@l$6>^j)Te7vp$K6LLH{N;ar&b?Eb>cQ4@CC@8=s$I#-hLITHZe?6EY+X~F{6TW_ zOI=-zC2elQTijWJeIaxPrAzq5ey8bl4eLiV$lKMsGqmaA$+FSyV7NG&ZWR6+vNt@90086yKT`kz diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.0-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.0-compact.zip index 0efe0230707b425ac8d150039a0e97f5e83fd932..c1b397d44ece297b4235d5dfc20fdea338a6ba5c 100644 GIT binary patch delta 783 zcmV+q1MvL&29F0DP)h>@KL7#%4ge&7hgRY|_;ld{001Kj001VFJOe3_L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yN-qogDx zwt+C?*7({A=TMSin=f)s`n-QXOPrZ~i4jrrvDVz?gLhll*y|Y7c(UMx#`%`}Hmwzl zEM3xjfs#yiNE}XHhhH(G-CKEHv*0)&XjWnOESX|> z6__vT*hc~8a2@0e688zifhGp^8oIFB1+}01(?DTm@Nvc5dA1WC)M9_^?yd|=;iYl? zVXidB6&X##KEM{Ww!)a6q7g!x&+`B%=KuJBJY^J0&%Pzd^};ZP-P;^^)7>0Mte$Tm zX=aa^- zNP~jhr{foM4F=r)^yGi@PvZ^v?Ag(84}a|H*5V1o3|eq_7RG@nJE)#HQ%TtiVXfg@ zt?|Xx8D9I|gkm98JM1(+A&!|EmUfQ2zse%$=0g#mnh3%LTu$jaeE`?+Mb7b5yBg34KHPsGB17ql*mKRTIYdf{r{M2;4*(uMpE=;Y3PUKr|fgjfEVFf2r9h%@Qm(bh96SO*s2R)DWut3Xtlc6JaE27W;T zc!yBHEp=b&YlvLf0TT8e!HMal2t8~=L5i4p%l6TrY>7ne;@OZ2tnF@_m1inr_NH(S zUtiD^_WJA8HUzeq>?xu0DTK8$|D^Eq?odks0zU&k00ICG03?5hR^mMPbm0O303!;M ND+5XfB?ABe001zQfI@KL7#%4gj@ta8$oLz;(?6008U=001VFPy;EEL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cnn-8j`PumgOS>1>wzOP6qo#TNG#STZ8vX zQ%|%54gE~vj758P7(DjRZZm(vOPwBYz0V97t-`wQc1rWJe-~?ZyGWl*Z}wACD3wdhG@?!Ny~RaKT?ri69k2VTMmcW z8sFB784FtZu%ef8T6G0#{zhT#{Q}6UEunG zlN<4uo~65T*w(zn@cV_}CLjO%DWGo*#?3Mr6kt5$js-@Owl`qbJ~DhC^Ec4$2u-zR zx!OE%+072|9IVyfvX9yM?fSXo*lDgB9wfB^uc0Kn1W0)5(>8TQ6vlg<=^iB#_r<>p z7dlC!e(VjK=PH%i$tiygo~zglAy$U2F~YVDAqy~rYq2;Yu7)RKGjGb@KL7#%4ge&7hgJ{9Xd&nV002q~kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luGQ=_CLB({Mt%PI)$tom&wwKVf0JV$&o@&DH46T-19iH>fBKgKDm)N=(Lu? zL`ypKWT%`o);KV7LC!Q5axb`$VQrx35N26|i$iK;r!Q20#gnG9h3v9AP_CflKhh4@ zxZxa9uyU9x9lds{B6YF+^AiEr<%-JmzDC(@^zFFQ?WQ7oCmL+(To|m_`WlSFQ@7L7 zb5S9jxCP^qBnZ)!Vq%D{Ls|w5rO}`ojJ4eLY}vGh+Wv%AJCFsspGTmq4eBeWWO{2lyKL8G_B^(OME-*qvI+ZZki?8#cTFW`9$XoVI zwV>aB^XPaHAGTt{%E;IJ+qOs}%7yxbz=Yk delta 764 zcmV@KL7#%4gj@ta8xxbP^r}d000vSkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiWbIy$GlrF-AdPgx6cX14nHJKaCY(+NK1R}4f@tz$kNK^MKF1G{kh7yuUAviWHf+d zDOqh@Jl0%C>tj$>$D`(+kMe@A2m4skzZ5M+(+%)V4W%7#l@zgBoy1lmodhFKdaywBd6M+?uyeD4+WyH z5 z*o;hTFQ%7&ull;vjVefx=8;*!qSFdKKR85nCkvOx1Nx>cgkRc+1!HB`=RWDgX95FF zGlJObh6G%z4CX1dZtS+yq|1p%R(pG^*UIBu(|yH%`(RcO#mA*S`eXS8R_;$($;?&n zTcoF><#cc&q?7_79=tTWv;?=T-cgSAi$@9R7?iE6<6*vJ;V^S38az3geJ)-5x|zDA z*5mUrbG4GO{dT+KP13h5Qz4z}Mw~`xLo{w2A@OKacOtsu--{+-cep6PCN^w+$`rwn z?a8lDseX+;`y^=2YCS7f)HtJlgeG|Yf8yXK-=ANLnxm5jHW8Nm?I9`QBxvGC?KL;3 udH)4F!vIiA0Rle*KL7#%4gj@ta8xxbP^r}d000vSlSTtd1{nhY0000N(08@~ diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.1-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.1-compact.zip index cd86e983a5831eca52430b416dbd53f08943a500..a87fa765d62b64abdcaf02b73cee9a7aaf9e2488 100644 GIT binary patch delta 775 zcmV+i1Ni*+295_9P)h>@KL7#%4ge*8hgR`*)a~E`001Kjkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDL}TcLc%xJ~t)$xA zo7f$w{eiw)zwB${2|*0(3x~{qxi>?4QiR`d)D?INP6tBlA8{QkzUd?;(CZnLIxUipJk~5Ap~ump zu{GzK;q969P2YM;Be;K9THNszhi^~3HnD(dPgA|S73KnN30644KPpuard_6}Os>tr z>U^_XO88jT(JI-YL1)O1(%U{q#Ly#ZiS)K4%Yp0wmE>NC$9FtIip>;+oieQN_hWk| zb01m$u?EB?ZKX;F|4aTZ08mQ-0zU&k00ICG040BiR`GSz?cf3c03!;MCj&|bBm)2d F004_KcrpM0 delta 759 zcmV@KL7#%4gj@ta8&$DhoQ*=008U=001VFPXj5DL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cc!?%gAIaGAO&Y40MRvzH z(mPSkNS>t-MXsn~5;g6>)|r2+_B2MYP@d~D{&0I|9Emmk3D>%K@d!^$lyVYXTn~4G zy-2oNl}eFf=h$7ivXBH+bagVf__!uUb93i|fEgknW3Oc-zF^`U`{UKZFTDwZ%}eEn zM%kV4G3qQH;$L@ql%iOYH_@;76KWcOnOL+Prbg&75m@fumKj|}A7Fn^udu~K)M+rD z!O6QBi!$oiy5k{gs$?S-Ggu#i)p7Vg1|d+NgH;8*EW)|*Bpmn|Dr@R_bEHx1*-Bs( zJs!ClB|B0XO`C#wXhjmAoV$&0vNTupl#aM(+E^I;&C3LF^{9>AA`oh6>_nl06{^(x z<2j)mh$vLv?q2bsXU2ce7*ImuS|>RVBE|_E+&TlDSgLw^77HT(|FLg5nHnVE5XF=` z0n8UiRd||Y^oL#tMihx$B!9s0BwmtSY1cqX#2TQJ<2KsF14iZlJy>WBJQh#0O4a0p z&ga$5@r6CEjbuiBM$9Oa{(3PMhRAi4!Z=edn2VJ&eY#RrAp?K=lx5q~xV)rFBH2zM zwgwKYZCm7?iv|k(YU?3W{;JB2;s1mGPIR3~_*m>7^foLnd(J>enx(iB)T5_zz)Z1BQ~d@lC1UaA#`N+DeNEs<(3WFkW=Cs!sHqb3Aj>&pSevb4El@p&$; z4-0=BqAk_P3T#uRfPqUxOx)^w4-`+qs)agw|MeBR ps!&S-0zU&k00ICG0JU>)RQyYap~(UO0PF~pJ_AYy4FdoG000pBVcGxy diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.1-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.1-legacy.zip index 1464d4e809d0872cd6431713e592c5f11d6a104e..1e8fb232279fdca09d36f3af5df4f8d3cbb61c3d 100644 GIT binary patch delta 789 zcmV+w1M2+#29*aJP)h>@KL7#%4ge;9hgMBpB$4L=002q~001VFKLaU|L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yErW9Wo< zqf|Mqq}tq@*d3_-fxcig7ixbPK$ExxEP|#QX|GM$-Ootkr{p_H08aGXrYPqG*&Kbl zSDA@Dn}i`t@cqRiA=q4mts_*_fF5dLWpHmzpgwfvWt^1Zr9CjvNGMqE;1MPp>{1id~U@MaW zL7S<4KeRl{nbbohW{2!~a64bL`oK5F+eq6HWP(VL-3sa*ute$>*-T66XKE?9q2Ts$ zbjVyiGOa1Dc$n5!Z5I3^GCTFMJX#Wng7*pQ&?=1CyxEjZ+CT1&`^pfaYLmh8$@Rf& z{Bidy8n4Ke7*ExaxjcW?=B@o#LLo0;1x~ z4{Y3VCAA9}d>C~hW;5oQ!g!J&4%W)tsYih*^UatlQ2<%W5{p;aJ$>ZT59%K>I1Mq0 zWB8q?!xqrMzR_X_G;ntQwNAd$)z5xZ+ZnJx9#e4@KL7#%4gj@ta8x->WpU5~000vSkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiHS+HLINy~Ex$ z!ORUX*5o@s*YIn9qff-u6DP(+3}|Op+B3*<)lv^8=il6SOSB;;B5mtrAutD`q^1ec z6*>y5VKz&`s&bMFPK8CHBy{p};x*5ui6RI>;GcB73z`Yyq*Hs>8q zhB&Kxqq?grNzS+*YA94LegxVyn*Z^k=d#U;-|vEA>myee|JsHF`jOi2YIMre&h0IW zmE||~`nv3_r>0Pk+M;L7K&T~(m%HiU=)+|ZY>{=>g+&lp^0~N0bsA7>Q9JF#%)bu4 zghE2gJa68A>3>4)dCw|I_tRK}y??@v6a7^LV*vE`;&XxJ^%zG~NJ0fA;Qz9*07d{j z`N!pB?#>6P=lJ&`+;S0^BY_FfK^fGxwTI5T^l4JkeR| zPAXUd!4?M$ixZ&)j4sW> zr0)w|fAkRr>6kgj2bOAqC%Z9@W}06k_s{JK^{A0?C;3b?lVV7*(rYW?E2SVQ@yr@+ zRP#Ygbq}sHuz|kW;~(Wg$gEi9ZZ})R5?v$anJ$)022w5MFUC(6axSN0080Ab*%sZ diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.10-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.10-compact.zip index efcd0ace8f58838fa8fb8ac7252583ff419b8320..d08d17ad9acd0a38e95ba8767d371ac4c4eca018 100644 GIT binary patch delta 787 zcmV+u1MK{Y2bu>MP)h>@KL7#%4gfQMhgK=Vt5EC$002k|kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDL|_3qbl7a}gH(S) z-3GY-o2G=6y|rh5pb_VB`8RRG)2!}_PewOJ{64u^c{FbwhmrCO0?N?h?cAIFR1RFS z+pp6WS{^l)?U|k5p-i}O(OQ4~@_EF%32Tiz z-Aq=c-dxZ?PD)dZ>FBYH7c7v4`(`Q3w>IcY;ywIV%s6<&OXx+v}l$`i~0*aSc^LANm$ zOf)8E_A%IpP-Zd07E7j1xEry#Kaf!@^m0zU&k00ICG05gAwRw=@(Q0xK# R07wdxIs-}uFarPp000$JeR==@ delta 771 zcmV+e1N{7&2Z{$6P)h>@KL7#%4gj`ua8x)+WRu(i000pQkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei^#!Xk#vNSAzR3=#kP4 zWo8FN^t(boSE-+{b$I4yrcopx2-4C3(J1kqE z9}y2gLs{Scw$l%K9$>5xZvH*>u!>C!_s6XlsW&yExbrPe&O81Fm>Vx{iI&No=po#@9;c2? zi1V>rHLZbvAc#_ zgQB!vG8rk@>RCh_U4TRJH9_>(4M_A}+eFJIrGefbPj{xc;EfUk zO1DzsijeFOv5-6U)FEW%_pCP<|u>*5`v9S8_hLn0Q#WEUCmCJ}K zu);+R@PRMNff!x*9BST8xAIbj|h)GY%g zjLG&_2&SLN>KBQ1lpdSWi>#LWU%E}kW!fCGsqZ+(<9OcInvKz2Q1p1><9;G#ulxXZ z2ys)DmH@gt{|dw;08mQ-0zU&k00ICG0Jd{*R5(dwliUIT01*k3N&`v;AOipZ0040R Bb6NlZ diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.10-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.10-legacy.zip index 17dd61c7c182914e295a073373d2483dc4864143..c2523d0efe11bf98af455972b493cf697e79d2f3 100644 GIT binary patch delta 818 zcmV-21I_%92criYP)h>@KL7#%4gfQMhgR(U_A~VY003_a001VFQ3ENFL?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yErU;#OF z*lg~DRDVL<2Dty5ri7HewP$~z5$AFFH*vz#tnRcbSvM?gxJbgoDJ{~P9!0Vem1wQ3 z(IXLK{kg#7qAZph4iriy0@5P+$;Z}Rwi(i2U5Ct!#h@ydmNV z6Lr__imfN8vQp6A7T(*Ltc|b4jN=sP_?xNb#|K>cWA(Se{b1#owatIM{vhXkl<$Rb zn7ehVDY$zbxjO!B5dV`rBI97vk`0lVDYKj-BB;zBSs}68xF!{|<@^}twE_m@d>)<#JQ~bYV8zxKT&|SH+}I|)q~l$oV(xk)PPc~cs*kC1N@vlC zk~zvhY^H9JNgX`oU-xr`v6vu_Ya3eA#ewx|42G%&NCNg+9@Kw-?QFg&zW0+TYLUqX zB1Ywi_?{*Kdl_rX0-7vw4eG!E3}U*JYEdSiE2=E^xCfvlk}*~f6aV(J`p9K-Yd^h! z0iwo9@!GlimjcjbRLjER3PBWrtTNM43&Q}t~TQZU1@KL7#%4gj`ua8!+5K&avZ001}%kr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei^#!XlDztzQFCMe z4}-E;kv=_p3SPT^IPuDAn4!s(?V1Va$j{H8*8VZSKEYwa@7-1lBP~K z8zq@kA}_L+t4L=xF5^AL^i2C+K8V#(nrL*djYT7gjSYc@yF-5h=(_gYL@e2;WhP6B z#}c?LOQXxbF_1}$L?SJIQV2@zrq9Xt`$S8!k)G@N?+kN)E}FA@JU^=8GpBjJeg^>* z9G?WQGXXgiskdcc24{42P>>_3hOSc~fsnFhL$)lHr4(@qDTUpOXN!I#psjv-t!vXb zs#OFJGYGA6FLQ6fnPE8qougf^`<*y~lFXADOImQW6%S<1l)oE@6$q&iZ|R}n62a; zI=yhM-u;YER^eWTTUM$m<-0^^&KKkEr3KzjUu&3uXx5iQs@IVEp09f8M-mb}0V`4B z9;MwYvE=_)9d1o*4xE5Wu~?BvY)7K)4BrdYfQlq=d@Q%FoY!N+gjTb3fJJusp^NV; zIdlcNc-rfig>EoM;wnS-Z*vaf!=QpMrY|bg>v2P=>E(u7yoRke^yxpy-NAE#>@*{P zfh_Y~Xfo4d@$zA)wE_GFgOX?-_TEVWv#ptDd+cOUx*QwMlj%Au*lzLRDsj|MO928u13v%)01g1Qb8u9RT|lVf0ssIw36oO;N(Lqa H00000=*VkU diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.11-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.11-compact.zip index b22cdd2528417c40361ca0cba6765500c2a2f4a8..f200540cc6b0299cadbac59a82bf38548c7f1cd2 100644 GIT binary patch delta 811 zcmV+`1JwM72b>2OP)h>@KL7#%4gfWOhgLxw>bUL#002k|kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDL|_Y-jlZ+JAZ|Lp z<>sl!Y*lzfqe_l{?*h>w+--jYQz51m_GGaaa=9R)n3fGamZriXid_iV7_KUUMk%J{ z2rClE9Ez{bCvbddNkyL$w6by;M`w*}<7lB#3~Uf85%ZC%;iIM`eiov~A7^n%VDtbk z2IrKvYP8abj4vlF ztTrqfm|c;#7eaKG3c4??>Y#nOKfVoQZW<~XQ^AVbk0|R<+BQmg<~I2_WD)Fi4Xk@) zb#eu2!+qMf+d}!Ee9$s4rGLF!t31R|>>tc1 zvcaw{aw&WO#J7SzmVJNuI|GC;=j+1%SgrtY+AZH|G-~8f?;xFLi3astPtMTEaTpg< zkvsV*LL>Bb6J08pxza4{lnO38{o9$&Kn9}&nFC~hrNG5Br+_z{X1?_Fy46M835!WL;|neWIr@KL7#%4gj`ua8$*?beh=$000pQ001VFT>~kRL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cc!>A0<0BHfj!*I;I{wjYjDh`%k})Z%@^( zAmjS5l3|LlDx{lDo;a?adD?$nnwdO!9D;<$4KG0U7eI9ursjHz#*OhMOnurTqe#qx zmJoRmxn+*EAtnXsPq_BzG|@|_u#7yJR)tU4DqK5;R%BrcKCG%|KlWf>!Nzm&#M~bvaj*}wp-vF>jqggfcmzn4t@}iC&_wbiF zYB|;o3f#+N$l~rc`kFM3@n!ORrhWzpEgfL+^+|X;{nXjI*o?Q z;}zMA(1yPDer~t%MXY}y(!X8+=1{R*cI1D-XAV_JWs$mLP3GW;>m6slM`X-X>7 zK094w*|rI=(RS<@`JXEXXIoHX9vsi}jErN7iFnHF4GAOu2qMG0Q1wY%{qtvXS5w`n%M#X01*k3Oan>=9RmOW F005dsa`pfK diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.11-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.11-legacy.zip index 25ef2396916cabf25a6e58dbdf5cfa2d82da4978..a8b4fa3d4f16d47261d95f1a08514b828033b57e 100644 GIT binary patch delta 818 zcmV-21I_%72c!oZP)h>@KL7#%4gfWOhgKEc?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yErU<;Rx zzq7m`ZaTl^=BdYQRd__BN{)Z;0?{GdZGQt(A*MgzJMp2LP^I&iKK}Rin6~l3;aqRX z>EYc#s({i>*lir*cC)rsDetesYiQx+w>9}jr0-(iq<*Mk(agJ_#6^dCz(HT#+92!c zM6MLBQ9*$Hu27MYmrX3KX5o|Roq9z2is1`eTA?;r~#!u#U1>!p8xf2=IS%&DiNP1l6rC`(vU@=^*^IpEP~-1?$lr#fu{7}?HbS`RS1 z8k>H0ggQD>9S6uL+k|PIiHI%~zZI+GDfL?p3&q z4z1!$;$b$Sx^Ls>KCS{q#vB!d-k_qfIjjNpAR|s+Fv`gi3bKFjmW6N55wyOt(-unt zrb=erYBoRcw>)<6QX%60pMiiM3+Qyu0qBfuCAw2oAde4e71_{wrp#>965GG3ui(Bp zJDq{A9h*lQj`Io}6S)ht$F|BTsD=#EJNUm!u$iGvg@*8#qB6SBbX=+YX*_1COP5$30vew`$oqnjB=g^}Ga5%5@QMqb>XzZl_R70Rle* wKL7#%4gfWOhgKE@KL7#%4gj`ua8&KkqdVXN001}%kr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei$JB>!^82eAZj&D!ZuWARu@${|k zPsS0x>zNr(>Y_V;xPUWqnf}@hng_KV<35E%T}TOIUItplR2ZK^_noBE6NA7qCd8CjcB#8;%Ug2;D4Y?7AjQLJ7c^##)s+C{N zSx+#=Aji~~Te$TFy3J!!5dc#SvH3p@zkNBWI@c9{uLzqaU@u$?IxJzUM`INU z1#A4}tH0jFujf1e3fT?b>NbRYQypLB)&D!ttlzn%*(>gs;NADWTd; z$%zM~7a24=WAi2|t$cOj!KX11JbtFx!*=4&)o{YQTrhnpaGA7N(k{c-RlDb<5ziP9 z#!zI=fJSV8KQ#BaQ&Ma4t}RnnUNv+%f%1pRfGb!|w|05BK`N(xAh!R6zzdToMC^vy z_S$_I+P<*ckJb6|=E6frsp-6ps-nw@&@oQl&tUs(7jY`qc$|t)J-t&9s$8ZX} zHKer~dD`u8Mn)dW4?mLSh^=+I6Z4%N65$eqYO1$?yo3fLGa_q_@|U0`(U7wmyCTrb z7b42Ok@p3Jg^eGmv{N6K#A0D+qF2%*#bDl439CCn?DvIyv5886C7Os^mw_A3~ z+uwX!&)znMlQyC5^$4-CkRJ<>U4sk!`i0pDst?;g-&<*0`U``G#2f;s?K&wJ338kv z=2L5H^9XUF*JDn@@BIL2XHZK40zU&k00ICG0Jd{*RPE5CJKzEU05}PgR0B!|Bm)2d F001xxbe8}C diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.12-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.12-compact.zip index 17f51760a59c7fc445d697a9dbe4fc91322c8f22..0362ca98ef3e53f8e3639059eb6476d6ea3e060a 100644 GIT binary patch delta 811 zcmV+`1JwM62bu>MP)h>@KL7#%4gfZPhgJ-cxl`-{002k|kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDL|_#v@>4?#K&=nS zACjCRPi9z9TARv$;`jk1_9!IeALi3eDsU6p*aNEdg}oh2v2a41X;TFT>#q~R_U0UR zb$6+(fHRPg=#B&Ktez@zejzmX)mv7M$qO)ZGxfgauGChqn=fecW;bCT8x?%M?wp7h>j7;HwZ(Db*ZpezwJ+mNhfQZNe zqTAB)i0G*3#&B03l73F&oM@&HG;?6jMK|zi3r8!8LVyuBcjuOlf!l;ld>-9{BiPMh zJvo;L{YTI`_^Y`h!kuSC( zOpxry{EZW${Bnz3rK%s4m93pBQT#7rL8tVh;R{>^Sd5My9K9))%^-;#Cnsgkt0&GP zin6kTlC9H*wt=JdMK`-UANLmtcuG1`CfO3c;=<2>1_TTthUG+z%G9%21kP0Y>=H^? z<{|BWp8vCX+wXl<)+RH7L>$mv`)5kLs)J&3Ay5Z_=Cyp=!W6PD<9=7?@Pcil6*#Vn zv$jw=_D>LJx_O94FB+?|@{BjDLULl#|A2!<08mQ-0zU&k00ICG05*SzRt%B3Q|tl& p07wb|044wc00000000000Du7i0001Va(QEuP6ILqFarPp003JHcpd-% delta 767 zcmV@KL7#%4gj`ua8!K5ahuoz000pQkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei;}lng}WBK!ICdJQ+QHV=NqzuW*Vt!^a7HF2rOLr;uIFJVHxup5I}! z+3eDC7`>Ic10QouJTMhoE+uof6nK!@Msj7Y3OXPuh%o5%q-v$mIj0U)LZjVnT z92?TX=54*gPO(#CD<^WS6)6^zi-9~alF_)MrmwcjLZB%_U>FTu-h7OS^QRqsY|(}K z_z`=?US#io2JRRN;uPOp-P%jmVuIp*n*gFB!nNf*@mqx~1I8((d%G->V5A!C6o{)v z%gGjYeugLya?Fq)h7&D~ClK5M=f0JT03asa>so#u$kS=1O<=Uiqt2ZRbu<1gIg6)X zqM#u^x$s(Wm;Mc$=A5}pLK%TZCL|U_2@(*JJJt1n*MXGk@A%zqGUW+0X>+p^l$ka~ zB>`#r{%-V&(6v{CJJ8hxQluB*(@1GW53FC&*tAjg*$atFvS_i2+OGP+M?04JfFJ@? z&sM^ZQ^hr$5!R$aB#EJQQU}<QoBT!2L0zU&k00ICG0Jd{*RD8p6o7e&X01*k3N&`v;90LFV008NeWMcpT diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.12-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.12-legacy.zip index 8ea839faa8789c515bf9130ff2713e9d3b4f015e..b545e28dc63862778b0eab80b83b0a636fb542c2 100644 GIT binary patch delta 818 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 delta 775 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 delta 776 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 H000008#Z#u diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.16-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.16-compact.zip index 92d708ff4355c81e0940a56d33c3131e1a78ca4a..7c528e303d7572fcf0b04f7babebbdd3085143cb 100644 GIT binary patch delta 785 zcmV+s1Md8Y2bc#KP)h>@KL7#%4gfuWhgQIfgktIf002k|kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDL|{BCk8R$dnj~VO z;QZF>JQiWYQ~=|DnL0`ivksfVFmBS}nS)y2Tp^uiWi$ZmkJUj8^}`!_z=KpcQs;{I z42SmJFF7=#)!orxy&ZKBzOpy+=)p#}0d+T}hL7q;WSP5?d#^bM9ad+|V`y0M^yuTA z&GDWHaM>5pGaM6VdZVWlTx(E%1h%)OP=P8n$B>GR+SqJ=#7K{Z;vFo{OU~qYLIG2J zd3+=xW1WuGNM|mbej6wl8n9w^GMzy*Ip{mjdk(;G#~TSKFJ@WD;uUn~VQ$FLvvy9@ zc2zws0|WF2PaSSU<#Vyf0ZF~?MLO4{q?Upr+ooShuJyd?X_Z39X^sR{e;!>5@LFs# zPmmmxH4Yko6?cBBr9q9{=lbR5R@E&4F9d*)H3v~~n{?*1aI@ZsO<$#Lj6&?ky;>V2 zv|T0pa^Z9jJ{68~)Q0h4(`Nvs)%4$EzTYYCFtMNvP&>nVxwc9(tGBq6I88VEKd z9m=8M?rSi*TICOUd2}tJ!6=&B*NAR(y_1Sn3=sR`u%lWc(lc*@h2~FLAydzyCjk zH{c=#`Umrc=&{CbkhvLmWKyWhPeK3WuLO=zO928u13v%)01f~>e}`7UiiBe70ssI= P3X?bkN(L?i000002xfA3 delta 769 zcmV+c1OEJ&2Z#q4P)h>@KL7#%4gj`ua8zI9{YcsZ000pQkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei&3 z8&{n^*y2!kFR##l34X=JHJ%xb+wqiV_P)DR7!$4<1%Ulgc%Bt2)b+UM30 zaS=md1KzL@HXMhAK0?hOiaJu7mkvBu^}!dvPQGcUt|Fp;A218QTTJi^vC)JWDBqx^ z#)7548wU6X{ADnl&A^XN0i?_Be<$mK1wfIR^3DaA$fCY~p!p@@0mL_1=lcy>$Gi)h z1YrYFnP=^S@cV~m0{jO$*z(wAxIhS@bRZL`p!P>9E*b-ntruRTJ7`zol(MWmwc1+L zBVNyLhyZPWJPDeShn;}3HOw@e+3B*O#TY%L*~Fm7Wz5gK9?pXAUA@ zV|a^*HaFBH>q0zLZ&!mR@YxyO4Yc)6{WQXk%d~^}?k16Xq+3K;#3MoUe4W0+p1PRM zf+J>N&*s2c3=CJ)RadviNVlN>OsVgA$3}C13=C#rH#rmTki0OuJ^_(?(;t~TG>JH` z`!~c@p>E?K5Vw<3R!P)d)N3QkeQzaIkI`i^CBVg->&C6DRQLI1ILLyJ?e#A1X`(nw zVb8|7*hByM(&}PRO928u13v%)01g1Qb8u8&@KL7#%4gfuWhgK+PpeFJH003_a001VFPy;EEL?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yErU_2|2 zZQh`oBx0f9{MPF{7Gc9w0ONm|I!X?+4x7O+Zqo*ko~p3e;n#VwZfL|Xj0nf$ZX_w5 z(evY?Yl({*INKYBTXB{arRghz+A38EWh%mz?~(;~jQvC9PUdOYB1a_^WLQ_t4d|{L zI#8OrAyvFRUcP$%n&x%=OvSue&TuQNNe1S;Xs&d-y;pA zg|MbRw}?@o9wn&r@Rcj)#fefN85>3 z&yC?&sH+^ZUrNfCQ4TH9;r@lS#D23;v_Gvirdrt^PXK4Zwr@cr5}}88yVbiW#O*{R zdKS1Gk<(h*UZHIatl%6lv>=v&O6jMyx56QP6?Q$<&ja$B4!mk!%#e6$i@^K|ehi6k zG>akVh#o>RV$KEqF?Qw6MxJW};hryKwRF2@BVhwkIPIu)HUHxylYCH10Rle*KL7#% e4gfuWhgK+PpeFJH003_alRpDW1~vl#0001hRCjFv delta 783 zcmV+q1MvKy2ag9EP)h>@KL7#%4gj}va8xGY5u4!x001}%001VFVFM|VL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cc!>HaEW)Lq1!~LB*k07|tp*KFR}wg$by? z;%7k^tXc3C;`r7cp_CGC)Y^agic**Ha=@vs(m3V~=Vnod|M#T=A#8R`ENxW4LEmdMw-_Gy(Q-ZC1;H5N3XJ# z#rK*olwB8|H7IYeMkxRLQM__y1^9>)vclV2Ca|O{5PF<&tXUv z-bp4?CvEMDNKf18kGSTtlRT7NgVwzdgeN0U(YwPjU#H5*MPq;VV)MU*4^!n(5c}bp zU%yjCJDX^L%s`$`F>f`-r*uf;)liBlLC~IQ1cCG-CBKBFcpbSn$BKCfGhlD2qft_t z=>(W8kI{Q!i@~LbD}fxCa>~$JlU|`_kNdLD^g>8|f^ShR{@LKPOsv%ixD*lfW*HB9V0zU&k00ICG0Jn2+R3_mOo8bZg05}Pg NPy@KL7#%4gfuWhgPi?`ZDSQ002k|kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDL|{cwvu)m>nj~VO z;QZF>JQiWYQ~=|DnL0`ivksfVFmBS}nS)y2Tp^uiWi$ZmkJUj8^}`!_z=KpcQs;{I z42SmJFF7=#)!orxy&ZKBzOpy+=)p#}0d+T}hL7q;WSP5?d#^bM9ad+|V`y0M^yuTA z&GDWHaM>5pGaM6VdZVWlTx(E%1h%)OP=P8n$B>GR+SqJ=#7K{Z;vFo{OU~qYLIG2J zd3+=xW1WuGNM|mbej6wl8n9w^GMzy*Ip{mjdk(;G#~TSKFJ@WD;uUn~VQ$FLvvy9@ zc2zws0|WF2PaSSU<#Vye_-V0AsCvK(T(`|=Q!5cjSdELum{zjsLjRBz?f>;0P>F1&XHr2nnB@?oddUz>+0I8=nSTZmb*&;UDP+2dBK9(gD z^&6{f=vN(v8e)XyUof;mu~Geuts-Uw@&(8E9@c6s`)G}pp=yMW)aEJ2z=eXwxQScx zztU{C+rf0uZ?Edz&5^}yQ(H{&|Cayw(}wc%`NqD~2wcH2Kl}SVO7T%d?~!U<*YlRI z9_3Si(E$uEVbp|e}`7B7Wy*k0ssI= p3IG5m00000000000001h0RR910CaMBV_|fYO#?6nE&~7n002!0dTsy! delta 764 zcmV@KL7#%4gj}va8&wPM4iZ#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei&3 z8&{n^*y2!kFR##l34X=JHJ%xb+wqiV_P)DR7!$4<1%Ulgc%Bt2)b+UM30 zaS=md1KzL@HXMhAK0?hOiaJu7mkvBu^}!dvPQGcUt|Fp;A218QTTJi^vC)JWDBqx^ z#)7548wU6X{ADnl&A^XN0i?_Be<$mK1wfIR^3DaA$fCY~p!p@@0mL_1=lcy>$F!fx z2&}s0S&@pHMd)7JuV`H*w!MPocKT|Hi!zPM>n~N18t9{gw1amm&rGq*p+63)bNPVH zCj@^9U2mg*Ta~Ak*4o^o5v^UXei@Sp#~k^`5q|uiqLO?Y&@^W5uS}Cw9xnJf>Tg(Rt`KbJj1Z8Fxu;{Z@Q0Nljs>Sj1`pu3idZCwN`PyR;2$&UsQ}($;uU2t?l$gegaAvTv-nW9rdYpO%yofrc zh?D|4cJ7I`N3qK3ig~_O@wcFzqmzc!4f96?q#!lq|D0Rle*KL7#%4gj}va8&wPM4iUV diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.17-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.17-legacy.zip index 688f47c1fc49e0bf3415522e3603bf2cab147f40..61f612c0f25f9bcd815c075984043081c72db39b 100644 GIT binary patch delta 818 zcmV-21I_%42cQQVP)h>@KL7#%4gf%ZhgR3nA|vtw003_a001VFOam#AL?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yErU`0@~ zZQh`oBx0f9{MPF{7Gc9w0ONm|I!X?+4x7O+Zqo*ko~p3e;n#VwZfL|Xj0nf$ZX_w5 z(evY?Yl({*INKYBTXB{arRghz+A38EWh%mz?~(;~jQvC9PUdOYB1a_^WLQ_t4d|{L zI#8OrAyvFRUcP$%n&x%=OvSue&TuQNNe1S;Xs&d-y;pA zg|MbRw}?@o9wn&r@Rn&TDwd6M0!;V6425lpE?uYtG5?|_^y^=}b0}V#dhhZPW$#SH`876p7CWxSPIOyNg z!k8B(P0w79ssD5&n>uuG+ImSUq^TsQ*{Vxq=YA8n?|_Xavf_X6$>S%7eF>c2^c**> z96J}#m&)q@Zg>bJTb8|)Vl;F5!mj=XUN5*Nktd#D68a)^kKgp@*~PtgD~hD*Ts%UE z$2{-dCJ~L1W!r99%^Y@KL7#%4gj}va8w>yTh!eG001}%001VFVFM|VL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cc!>I*-51yFOdYLB*k07|tp*KFR}wg$by? z;%7k^tXc3C;`r7cp_CGC)Y^agic**Ha=@vs(m3V~=Vnod|M#T=A#8R`ENxW4oX`s;A*;NDt`gal4cJ1Nk{1o z(^dDEz^kAIWV@JrvDAOvGK2~z5AlN0y={X0sI>;9Q*c&kuOC_;+@n+w&HM5GpJfg* z0;%->Ce6~m&6QvpQVS% zGOYkcwq=^16w9+#)Z?EqKwJC=Va>5;3Z!BaS}3`uZD;kB;%|RP!3ZsRs+O1~18Qj{ zvn`5Ka2LE)mC;=6C4xH}w*r0n09K%Lfy)a5VC%EBv}^yJ5a?1kz$+IL-{}@Y*fhk; z)Op=T2mzFXfSG_S_J4f~%+_)D)yoZ9Z>T7)+MzS07wB}3m@`9d{QsS!o3{BJwc$xh z$O5z8&hD>$8QEC+YlI}jn)kDMuPZ9_Spd4UfgFWVF;dp?;#D|Mi7sUQ@KL7#%4ge>AhgK}Gzmwhq001Kj001VFJOe3_L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yErYlHOJ zTR$4?w|w9BJ`2uymBym_q!WJ+bAJ*+805i`P~l~_j;HsuQ7XqBkWRbVw*SL`33aDI zTolP;7&dF1L)(>(bMJLQ$rlZRAy#~>Mgud~{LZ{;Mer7wp)#0VQYwQ0=(8UbNWl3i zW_ggAThIDW@~vo7_*fR!KJ##KUvurA78jL)J(UYSCnno$kyTxCIh238fYlepQf>Js z9l0v*dpjjcTg5#>Ug9P)SkQG*~;W zLl=9tBsx%crQG-mq;(6-oy6#J1-)%cCV z-@H`(JWo0MPF}zyck9zT?7SmligtcB*n9FDBk#A=rh1tbDB^$W27jxUK8lA)pF`kwIzumQLFiYX9Cs?BGyK0Rle*KL7#%4ge>AhgK}Gzmwhq001KjlPd#C K1|kCh0000Js(p0; delta 763 zcmV@KL7#%4gj@ta8zgA2wcqq008U=001VFO#>;BL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cc!`6E^qAMzhu;C&iYEkuIc7h&#pOB+^#6 z0Ma06(nu=sZ0B$d&V;BviRgckfsV)2X1>YbvR3v(*hJ1{QP>H$_{`C<&+Tvz`U(v; zAlvTZR~f&;v#DX~Rg-u;5O@KY!1 z4cySDPB!G=&w)sa*a}3*I!vi>4rYcZ)OEr@^}F}F2TfgntXHf)RA=1?T+IRi0PF~pJOfGw5d#1K008ECZruO? diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.2-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.2-legacy.zip index edb32dfb56ba401834e3131ed06645f79ad40e2f..e6128824a5d46a7f85dcb8dc338c14106938e263 100644 GIT binary patch delta 811 zcmV+`1JwM22b2dGP)h>@KL7#%4ge>AhgM_m?v&;N002q~kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDL~Dce*;_vv?6-X1 z_C5>Fd6mYZ`lJ(o4|9JKK^Wx0kx_q%ugmAeV@W9$&#r0Ah9T7>s$p%-Te)!RYOIdr z!Tm;9+{!P)O>ZqL`hyK4)<0)8{i!o7$Z`Z(wI$V*yqrV@A;dIh7(0MzR1v^oP(XC< z>VZn(*Kw~^uG;JgSKs2IBI97#Q6|4go~!Cq*f_vf-Lh?q?40jR6-Wdx&C>|xP2 zwIIqWtz`9o0%bttH^{Td2?BPHHbHtpr^N21WPD(P#bLi9bz4qu9;5y;c?8cYLcv0X z$)Asn-|)p_o|(Tv%muPPs~UsX-eZfrH5KdV;Tl;?7oOC6XcIw*9A@BQWE;v}pOl0> zyKztBK}}_$CV>ENX)7ao{v(+zlD2;>iHRON+=}jhwq8*`q1WaJz?dFn7t#sN#Hesm zE6~vRt6t9l3;d@Q<;-^FG%Ecm(N~qC8Tv_fqe~fmj9rVBlyb*p$Dm|OI}W3qH+~7= z!(8Xl_Ojq(avC8x_X6$uEThj#sQX7}Uy_!Yo`K@hG7We3oiE=yh6cN+Z(mK_tvNDs zVO-3AD%zCEvD!f}TnjIcgP6koJLLlX4TCppnl=RO`&~}DdfS4q)YOySQHVRIYK7dX zCT3`?8WArHXbC~nm676*w?qG@KL7#%4gj@ta8z^Qe3;Y%000vSkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiq*ft_%tU0s*wdI>FK0m0Hz+n(Rec3S4H_u#xi~?!shWtu zXjPgFa0YYg=bFT-J=WvdrG)Vv8NaKJ>MJUgR`ugl=HQFXY#QYzS@batR9lv4s-kKtr9@?B9Za7$Vckjb#?_xJs^Jsx2x| zQJRd}Sq)ou0A*?CocWMg#nz$o9{V;NRQJgwf5_8eprh|C5bo!UziYsWs(}L=jew!U zz*G(GX^Kkre)n*>MZpR4#k(i6gy+-H-+1$B+DlNxm%1S3vUH{-Bu;ML1|FTLK&Xc% zi-72(Gros^h3{wCQ#jW1=IOMQFSW?%WKh!4aj+Y`bm5EDv%Y7T#RiC5W3>{p($4)( zk;W`n;R-@Rqw53TCj_;6K8Q9<4jG zmp*B8nV>l(+)MUu^+tocHdvN*XPd;<8h5{#x=$YyLd6}-s^YazJ{nrjjmi#$aM+XJ zM9x5XjS@spG>cM$3|dXV9BlHKy-rw6Zz)9bta0<4k8J`{(<1v?c|>yAJn%p`_6*Ci3KQA& t|Lwk23s6e|0zU&k00ICG0JU>)RCD2cnA8FQ022w5L<33&7y|$R008}Od5!=8 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.3-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.3-compact.zip index 99b3caddb678b4ce3ea9013af33c43810f0f071c..9970a0c0c56f5d627f44a6e63822ad17e6286b96 100644 GIT binary patch delta 775 zcmV+i1Ni*;295_9P)h>@KL7#%4ge^BhgPB<-XP!t001Kjkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDL~{#8%v(Pi?6-X1 z_C5>Fd6mYZ`lJ(o4|9JKK^Wx0kx=1fw~nXxv{5R@9gt4D*|z_~fC+V{L0lBcV;DAT zoI~4{j&tvILCF^lf+1FXtVRPf*Zj`BYDMrCn4vP5T~aE80O+$H6iC4NDQ0<)nOo2L zPx7s3Q}|dG);{xaabI)oo)#CCfjyNAJ|`yIY>`!6aygWLx`5Re#ZqngCmp#e?s?R7 z0J8Z_LgMDP2JRz97Bal3ADq0?JQUkW9J*D3FyR#xO=jcO)pLFK!HacW*QzYwxHt`2 zNqks6ki*e_Mb?K>KOGN!h(-YTBT`6cl#9lov6%GIT5JH-ha@h2ghd4sbOd{Kr#t6- zy&N_c9>w2(hEKsoTz~Cp**Gi!Uc`|BtT%ZD!ZetaLCHT}%$MKJmMyJ%cDIoBL$&Vs zs1KSHYq3HfQT$^yPpHm9pS<@@>+0RU(o>v$J$sU2C3tog-B40^*5YGz2R1g1wr;KT zUek6bvd*8}k-I$DF;@M|M}?6=pg+!i&$u z`KlvITj3hX(rnA%31*}?Tr<24Np`wEMJ_m1?>QJK_NBJbe&w6>e_!0>H8J}0#66md zTa86q@#%E8n71-aI6N_aQA2P_!_Z<`X?Zg^bs=?Ai>L1${F-#CG(uMG=V0c}n$kdy zTYhvX{)J>N7wFc_|Lh{~w@^y~0zU&k00ICG04RTlR-zu>Am9Q303!;MDFaFdBm)2d F007Ola+Cl7 delta 761 zcmV@KL7#%4gj@ta8%Fv5jV>M008U=001VFPXj5DL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cc!}Qj4-(t9R!M0K^=MkuIc7h&#pOB+^#6 z0Ma06(nu=sZ0B$d&V;BviRgckfsV)2X1>YbvR3v(*hJ1{QP>H$_{`C<&+Tvz`U(v; zAlvTZR~f&;vfNG z(1HU(wLzB6nJKvrMPXBel>huzASytU0ab%E9(1_U5*Qer2B0)>YUsH*CUl*KhuI2} z*%$Nri8eH*G?F>8>ZE^y9sX0Crag{Iqr#i1X8GaR$Uk?gG1j0Z1cZCHhm)i(5&a0q zIQ`BOiN0pqb5u$ppZ)FFwF}=(?DVEOc5WGxnEV^nbm%a#)x7aAS_`J+*HwXRDPh}Y z^47LqH2CyP`6&tr^l|T_vm}u0O}Y@JW%k?|F&zwJFAJ<$G46j61n+hz$Fm8=Z;9Wu z>Ta$+q(N-Wmjsb9sh5~MBBXlF0ev^ewd8>jt+~-ONPkQdHKxw_B+?^?nNDVdCln_g zzK@KL7#%4ge{ChgQ6j?+)k!002q~kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDL~{#8%v(Pi?6-X1 z_C5>Fd6mYZ`lJ(o4|9JKK^Wx0kx_q%ugmAeV@W9$&#r0Ah9T7>s$p%-Te)!RYOIdr z!Tm;9+{!P)O>ZqL`hyK4)<0)8{i!o7$Z`Z(wI$V*yqrV@A;dIh7(0MzR1v^oP(XC< z>VZn(*Kw~^uG;Jg4B*elL!jb7gF8??{GI3L@q*(G2Vs*n* zLHNCwjF-EAdM{6<;(3UIsDepqGs`b%6c~I@P4Tu#u%ZyaOwO=XnynWybW1&jN{X;f zkk6;ZXLBfLm=|vRq&#MIwIU@z<#fQH2la+f^Q}!i$J6B%Sq2(Q7iP0;Y`pkQrp{6G zE;yQe&7IS>g^-eOzsp~rbS?W;M?fsDc%NYdj39b{zC3=%Q7ll#f8a+S%8r3pULKSD zM1&gbndv}SY|zf;G~P{VqCAmUmEL)DEgtgSXc_<*umFl(&e@KL7#%4gj@ta8#7j7yr`&000vSkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiq*ft_%tU0s*wdI>FK0m0Hz+n(Rec3S4H_u#xi~?!shWtu zXjPgFa0YYg=bFT-J=WvdrG)Vv8NaKJ>MJUgR`ugl=HQFXY#QYzS@batR9lv4s-kKtr9@?B9Za7$Vckjb#?_xJs^Jsx2x@ zfI6Mad4_P(TlT2lKG-f>=L&))G7NXQL5ERvaT64C5R#wcehi~_fUT83E3^@n&{gC!J9`4|3>dt^5(D}r%{ zqI1{HjL4pUKNBh4#+^HXYmdGGMpx!RxPPq(&fz+b8I>fVYxCiv98iTa=Ut+%Ev@uvH@r^*ero!7p3r? zR$PBT*lE0M+F-8_*QNmkmAV+di}d~@Ra5C2=}M&sun2ed?pKa{hF=1ST~ooP4EL0N zh-kD14;%L0{{R30Iu9@@KL7#%4ge~DhgOtH=N;ez001Kj001VFJp(C`L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yN-`3`{j zhf~sut}pWjgizW3IC=Ulgrk3RzpmB@k$f4E>s#;Hb;Oa4WN&$D@FXgPV!)T44lt7w z9D6e;aD@L+PuLDCR~gp=j}eLr+) z%lvDTO$9gxld^V!MTg!w@ib;Yw~KF`YSThS5N< z@uB-E+?1H5-3?;alAxHP19GH>1{umO@UH>cg3tqF-RJ!@7 z)5d$5+Kh$hTV889hw_iq`$cd2CpD^)od^_46CzMrO`9;ncnpMSz{jKJ&Y90yO))|rY2o9uCL1}Z zu(sKvuJ~k~k2G6#zsHTuM&km30^`|fI@v}PIyJSYQ{0pnD-b89Dc}5@GWOabk#ZjB zLY>B^iZ-jn#$7g{kgz5TO4gtMC5*}dP)h*uBMOr& M14;%Y0{{R30Fa1tR{#J2 delta 764 zcmV@KL7#%4gj@ta8%>&-{{T)008U=001VFPXj5DL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cc#1@N>0p5-{iw4ed$yYl#ju$1EDge@^@t z(+{59AE2O-=tMOYOEy*AuG)XIie=+2KW`CMj!FQPw5@*$#Rp>%Lk{>Nh7HXW{frXM z^!l58>4A#N0bd*gLoRD+u)?$fny-NMaI_EN9rN!%SA-<8`sc_ClpT;ovugkI`hVNc zihf0SI(eAYv8)6zaVNX*nMEC99D(z}71XmLg(Xbh?J5K3hkws6(Pn?N;n!MLt%Rye zF5#JJe{Y`OO`EE9r<&ZNla3Jyg$<;x_5I@Z&%+-bY5D1y_#{}M6lS9-L4 z`RKBKrug=-U{EXwaF3WOl!ogoL=)Nlc2$d2c$fMI$rZ=Bq(Vjcu4)MNgorC#jk7ci zv}sIlPWIi9>PJUH07!o%MMl=%$x#op`r>jDl7SnLkEAaETdq*72 zlCy-jSzZY#%GGNLwyZ*g53iFG+*}oGAlIz#Pk{V;GCX>&H+f)X@CW>IUQfSZ5Rzba zn;d22E9ZQm+$1*>cw%lD{{14y}&Rr=o7=cK+1&P-q-|@9ttz&I4ep@0Rle*KL7#%4gj@ta8%>&-{{T)008U=lRg7V1`-1R00001<7s~Y diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.4-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.4-legacy.zip index 0d5652cc974f3201626d1ee16bcfc55dbef4d714..95af39dc51dc5572863a051b0d85c4f06e894322 100644 GIT binary patch delta 811 zcmV+`1JwM32bBjHP)h>@KL7#%4ge~DhgLoM^zG*Y002q~kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luGQ~3^n`G-@|imos7 z282-A{y2I1Erg?gbHA?E2$6glk?dDbh#peV=wf0ijStOCXb0Ynb7zHJ+*Q%1tcBB5 zsvShP@zXrkaI`mIkPweL52ACqt1C>j37>Yc}bj4u?oYn>le1qum@zNIf*Rd^^W3a0s=lGV^z)gI!{#cYaY-G&iOKXKV$ zT_5-%aR54oE7Lw-0HyvL0whs3ti9=+6QYdsI8-R%r8^M?c2tW{wN=PxHtiCH7vq5eTfmoRG0PvTc2TK^_r!ws6FY3OJZ*QHL0w4PGKa zC`^-y0Cu1?z6T=A!hY+n3av;WI)w{^CVj3GP1JRn^(iraNS`jj#l0i!v}QFvVrTC} zW;^zE^1WE|satd^fIl!5Z!eJijE}TiGeRhAmi@C`o>{>Lcw)cqW;z(GtY>D0sXpSK z>$DVqZSqPr$MkRWkCFv(!mi^8BiNG*tCAJGRrSPQo4PTH;Km`v&Z#0LRr1?N=JKjx zzc!vt>?MNSJBGI)NMuEI)=p#p#Sd5LP)h*@KL7#%4gj@ta8y;NhXvIF000vSkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiTW#`zLF`PyAFlTr!rHHZk&TVEj+tIK%p z-MazR#I+h~I_!iL1}QRh5G-ZAHN^IcA1GTIxZ()+eBd4U@|r(5*T3odV5}RAcV&z@ zE(s;$z^2E4(pTd6slVE1+b560V0Ev9p_sBLeuD^?PGwQ%kPn4mGU1|o(?4DdfpPhw z3lzk-a0uxZ@`i-iCmSxzZB(-y>(3hEI;bRyzu2lD!pF-F%qYW7_Q1~)f?;QYP@{2v z1x9SeNY|?_lfo+X655-g9RU;HwP58kbQ6ILQ7=w^3MzJ61=+3vdKgW)TX0RM>>q&q zjVZ-1XbDCA~!57Q+wWrynPu8zXJ_cNF@817+=O-5~`CyZ@ zI-@CW_<~nOWBeGZ?^^=kE_964j4=&-AioX<@ooqBVZq;iW|AywF{+kgN|<)7ID^8?hXPS1)=Y uZ~woKhQClt0Rle*KL7#%4gj@ta8y;NhXvIF000vSlSKnc1{nhY0001FDQMmR diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.5-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.5-compact.zip index 09a9c249835095ae77dc4b7b0aaab0b0d5bfd12d..79bded00ae5b7f5b26a1e47451fe9e13c8466c28 100644 GIT binary patch delta 775 zcmV+i1Ni*<295_9P)h>@KL7#%4gf5FhgQWVuYuqK001Kjkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luGN4G9{(JeiNvoRv2 zm^VIo+qWY7J!1WTK0{)j4{901x}*j{X)1-~n@ZdzS(gptgg<+;vFT#8Hc?rZ?=bIR zGKJBpx55yEt&z)KLiGS6DBcqYTclALw*9mqChdo?P?I8+F?Fj^#@v9iH7}U7SD2to zUNK(A{-vW;X(|^C&)p(noR~DLJJ{RWccg2kL|Bu$F5iKFr1dQ5kCUOpcCNIth^fb1 zMdTH^sa$NoE1nlCUkDx4-USD&B$ZiYwCTr0D!@6E+3;f6Q`-oN@v`ks(qX<=&T8eWQTG%g)sb^;``j7r6CsBFuBtoq(m~LYsx3 zrf9_kzSV_)#J}w}nfSEFG)K7;IeN;+4^m3+@u26p5Ac?!5K5mZ2Q0vG59{ z>*CZA7I-=4@rGXAf{tBt92u(w@C@`bikQYt^gHw%L~RXfg}zRp39v`3Tz13Sq1wf% zjyX9{_{d}3#YaRM1#BR1WrxYsI4vA|ql4hb;{LLK>mSX8{W3BwZQI$ zUjq>zYdZ-f#3oF03!;MDg#OeBm)2d F002#`aL51v delta 762 zcmV@KL7#%4gj@ta8y?gOjyhU008U=001VFPXj5DL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3CndTI*|0}7U9cn7Y_zn;tG0e6w3UhV>pN< zrUqF3lG4i1heNEo9cx=uO-CRH=qehBs z9ePav{d4Ulp1H36<>11|zPj-!Jp6b9_H~KSxXicwG?LsQ*{B`Y*Al+DBIxC|5!dmpI3Kw4GT>O=x+wKz^(nq z2!c1QD|(1@!F(*+Elzi2*0dWjRBys0^BtsK13nB@Y&XY?$mP$kha3t0azhakwv*)V zMWyMvBc88W7jvIFCWe2TvP_LS!5^H%IQfS$EDM+RgdUV4`8w%JfpUBn#yC`h>(URe zS3;9kVH1_-5+Lbr zBS`WWLbn1a><@(SxwRFHnS4@cT6oD@xaj7BUPY@HR@W!dEz-&V-L_b^>t^Zw3;0yr zKS8PtgUfp`sMJTCLXNK-b)dS7hNS4gZ*o*Gv&||*5P$}}UBg8Mn~TX$Bno|!-KfUp s{%T@lP)h*@KL7#%4gf5FhgLmD+*s%W002q~kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luGN4G9{(JeiNvoRv2 zm^VIo+qWY7J!1WTK0{)j4{901y0KYj#{+pYhInwuh7D_a=Qqb?8UHcSV5xZ*cMk%^_z7_ItQ%JR;{p$Lnx)Xj12}SAbhtLQ%@P&bYl6`v>b1Oy)ZXXGF5vQXH zMaqIn%P!5MiCis)7sfj?4V>eZJEwakXeS-4=be_=;VN1qd(g-#2=prxA0tn+$l0`M z#|G<={7iGH4J&7ZRh;;cF@Mab%`Nea5nM1XRI>Nqvh%RgKHDT!5(VpX7}z_CXX$|l zK={sX#L)GBp+QN}4~UVWka0bSu^fF~I9i{Z@7HDNoA~9;Z*;7UW9&cbbg`fPwJFhz zH2yJY9FdaJ&e8Ot?eL$+f|*HgHQA@E@q6V{bjrpL0MN&Lpn-l6k8ZHY=B@aX0z9xU z3Kynl1N6rzA*b8mQL-7g(T(B91t_=q^EDq!=%@aFz1|!&&FnU*68Z0M4I+GcID^XX z49pvAq^GGBZ1F=QH^848ThfYt5uP5zF86xDcDt78+&2S3^4r9KI&-bQeEnr=(YOJ( zNq3CYq_`(@CbByO?@D^sR(+Ru3~P=i86REh}nD$-WujLa?`Thdz=c zf@KL7#%4gj@ta8#~QX1UY?000vSkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiXh6M?ePB7W!i z4S#8mXhQmlTt?P^>c1HMbf-PfxU`@T_;rOG8p`A+f$I%dR&H_!- zs8pu7?P=7HBPWuuGxpnrcjI#Hknmf(i6R`b5$j6}i@1wh)ldljPeXy!xo>m??+(E2D5OMb9#acL@{Bh|Ac3E@jj; zS>3`?fE!Z21LxKPa>Gk7V(#Z+%)RIX8Gxzqvx022w5MgvL)7y|$R007Z!X!8I7 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.6-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.6-compact.zip index d63a357bc95010e74b45345ee0d8b3675b9ecad5..435879d6f45d0af65be9dc82db6b601cf4ab4ef3 100644 GIT binary patch delta 780 zcmV+n1M~d*28;(AP)h>@KL7#%4gf8GhgQf4GH>1j001Kj001VFJOe3_L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yErj7sut zqf|Mqq}tq@*d3_-fxcig7ixbPK$ExxEP|#QX$&eieW~_ROI+!y=drU2DC_Rst*DDx z>GAunW$5MwZ6L9OL9SkCqUVcOzu|fQR9bJ&gVDz@xs}VRLu<`c_v(d9sgG5OK7!vP zq*A@F-_mxDp0FQeSAK1drW(m{Ve{XrbzNJ^0M z$8eqmaY32-WB=Z#E)g;Td_CUus$#T5Sa0XGf zd{Vfr#lanI$*tRy677FsZFYmrh3%a=01BY(wi_DB(`Kd`%-6XtxdtV6f&r(|&p53b zkp4YTsN@>Qc_FHs5h%A9(OXwvUF})$xa0GQy>_Wk#Z zXArcLfq4WJ;tBahUu45(ohby6oD|doBz)rCMgOd+39yrli^8D+ zCu=!>=lMt1oYuv`D}5)6BdTZs_t>iz7~)qx#lGMB-v z3M^?PYeF{ugOR*s=YoF@e%JkwSrJf60Rle*KL7#%4gf8GhgQf4GH>1j001KjlPd#C K1|kCh0002G{B}+N delta 763 zcmV@KL7#%4gj@ta8!m-*Hp~{008U=001VFO#>;BL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cc#9H#OobGAO&Y40MRvzH z(mPSkNS>t-MXsn~5;g6>)|r2+_B2MYP@d~D{&0I|9Emmk3D>%K@cm-rZQNpqVsg3V z_}A6=0q?zf#RIBWeTPhov0abmn@7FU+p=u&q|s*nr!V;53RM9`zb|sf93f_USt;s9 z=PhG&xw0a^m9KC~`1M%%-22M`yT#4(V{9YTQDAZ_&2ML7X%k0MY|4Lq9X|YyMos8j zlrP<=ox?FIXN~nvpvbi*zaVp3askMO)g?Mu^&?;uNY%D@OY_k)dOn;pe97*Bu ztYhRCBnYJgEg)AMLIyR9m18+pIQ+8P?vDTyk&HT<1ZZ$D^SqmZ<0g+zG%>k;jyIo8 z3Ki@*Zhv`>{_FjF#P06b!2WvE)}D+CZeFf5N_0A-om0rvNArIb6&=c&PivFMlR0pc zQlJdxRa@BKgh`Y|w33oeISu({T1g>(y~sZzP5v1v6ownHHor5lkvla0MFBh}xKL|w z4Zp0r7iz)zY76G(42B>`kEk?w;PoWV^f5%z*gBo_^>9w)REAO4RLuea0PF~pJOfGw5d#1K002FtawGr% diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.6-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.6-legacy.zip index 6b7e407734ca6ee143ad15172f5c6cf0ee96e3d4..a18bf4806a3c66f612b845a0ffac83dd1c976f6f 100644 GIT binary patch delta 811 zcmV+`1JwM22b2dGP)h>@KL7#%4gf8GhgQQM;LYX&002q~kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDM2t%EZKG5``Z?*x%?H`v*#Om z-v76UThYi*cl?RrVNbv{?Mxa`;6bHMfAMjGkI(|{Gz0B_+WZtk0bnbW0YRIoeLu83 z%bCR>p z8>K-D%}w?!jw1d9i|%+|y~)YFncLy+LgNNY!5`OYiM{*htpEPiop+xg=WnT$6wooE z>E(dF+JEYQz>yZy$illywNMdm*gg-&B9&#cYbZh%%O zryGMqek=bpb>^RoCjc{*8V)ISV`%n`%OOBKGP>gCbaV2{?+wXXL$IH*jJG`kN=9rpm0(b|N4n&0l4Ta`Wtc9^wvz zZ@(la(N(qPVm~S!Z*1XzutQD#GLkS*O928u13v%)01f~xe}`7XAK=aA0ssI?3IG5m p00000000000001h0RR910CaMBV_|e-Xe}_4Py;LmDgyuj008WKfUy7o delta 763 zcmV@KL7#%4gj@ta8#}|YoXKv000vSkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiHS+HLINy~Ex$ z!ORUX*5o@s*YIn9qff-u6DP(+3}|Op+B3*<)lv^8=il6SOSB;;B5mtrAutD`q^1ec z6*>y5VKz&`s&bMFPK8CHBy{p};x*5ui6RI>;GcB73z`N&{h1x`h) zUc`i9?XdO`jB>lwe@_XZQ&5P6!-N-~a-q*GQ4gVNW&;_Fg?-4Q@m}6~k!_V^Q=WKg z%nyD74`UztFe_V1AW~w}$tA-g^W9F3zoe&02Cij3 z-cmmIe&Lkd5l?XZcfS5l(3>5&qw;LizK8(;HMK%u^cTG2~lm=NkZ|w5~wg3JDo_?8s%+(_n!=C<|3}P`E<^$hohy>Ty z`i@GN1gbxj?SJE%P9&^KR{4=}ld}#Xan}WcF4a`f_}cK4b5;S{y-++B#{2ESd<^dd zC$zq4JThY|j-+n8zs%d=NO;=+@S|7c4XI>Iak#v9MLQT=GI-&ohGYX0#IshccbK3F z_>Xf>Z%qWkp>0h_PA~Mxppnes$DOa|dd-?5MX%amAUX2SU{(wMDn0D`iMDh0qEUz{ t|EnT&icm`d0zU&k00ICG0JU>)RIW5@q0|BZ022w5L<33&7y|$R004b4Y|;P# diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.7-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.7-compact.zip index f6a35103afcb27026b93812f3843ac36b43e7802..9e1426299f48cbe0ce7bd5570f68780ec0687d5a 100644 GIT binary patch delta 775 zcmV+i1Ni*+295_9P)h>@KL7#%4gfEIhgJ)twfW!z001Kjkr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDM3fGCZKG5szYndRQKwIOR0}li9UkgBcxfN8nk~f z;&=w%cV)*1nBbgUPDfg~MIrEeY?p&Uqc5Y}uRcf{DbhiIKm9=*;Ydo5^2czV1aU!` z{Fx{^1C({5xlb&vX7XU08_0Mx*e+n#h6*}2KlLT(CXzq%2ncYy^@1hCLh&zYKk{0a zCg+V`;}xE_LlyzIoA$Pz+-itHyK8#E&e$vfL8ufsMgrxGTF*=v5po7l9FAO4s>*fc zp$Cj@&EG|T&Nb5+-#N>q1?73e?>k?NA9g)1N;${hmye4tMvK7N(?A)!)O%4*cPX~N zur>PO&!v889~QQ*n3At?!e|3DO4;yt+Sji9%rbVu;>#EsV^ZIZCLT7c%c#W7L-Y45 zNstqRq~H2T1I5?darH}0uC11#jI0?{toA1b1y^@}5C2w|&~9sijoXFF(GF7@m2@Ot z`rbK<5S0YmWHV)rv;l(F7xbC!Z&05Ob+kgDWe@XZ@(=J@1) z7lr9{SldO1unBN^5u@(P4k<}RZ#v@jxsE1+EV;L-ex#HlZTqRFiw=1LA)JKWqLT|! zu03B{K3gYk#l|nM&zn3(X82xKP~uL)_vS@TwUZNVQHF8ju!Ld_CeAz9etsHfY%kdC z@KL7#%4gj@ta8xKZQiRC@008U=001VFPXj5DL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cc#CkcHwaGAO&Y40MRvzH z(mPSkNS>t-MXsn~5;g6>)|r2+_B2MYP@d~D{&0I|9Emmk3D>%K@cm-rZQNpqVsg3V z_}A6=0q?zf#RIBWeTPhov0abmn@7FU+p=u&q|s*nr!V;53RM9`zb|sf93f_USt;s9 z=PhG&xw0a^m9KC~`1M%%-22M`yT#4(V{9YTQDAZ_&2ML7X%k0MY|4Lq9X|YyMos8j zlrP<=ox?FIXNF%0I#UnIH9yA-NQ7tVfqRzA=>`{lR z8cX|&Hx&nrkRTFrFEBi`Fw|w9)OiM}gw`*szAd7TB>%cG%C+#`gN7DN4Grt6OrjuH zYA96@bJ@db=EsC?Fuc_Merf*4De#E}cv`MK`x9T|ZxXx5tQ&uHF^n&!MUVl1#;F>? zXC6XeZ5O%wCH)-DVp*c*10GZ1$Ccu;yf!>Ikyx$Q=#ITga%8Q5G}HQ_iArn}_A4cM z8?x=9E!5Hn+2x#?gN`nG`9CD)JM~ug%ii|4POHxCbE+qDCzj5wX~;hRebrXiO2M;V z;6lLw2yvzYjZj2z7kJ61+hi>M4o3k}GO@$}TjD<#alpa-5eA@@wqcvokH>Lq{`oxU pe^5&S0zU&k00ICG0JU>)R46u5gvkN`0PF~pJ_AYy4FdoG005GTYlZ*- diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.7-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.7-legacy.zip index 0c57a77cdf3b0538e6a245b2346bbb66339e81e3..313f42d9be843cd773dd5404c1ca5315a82f4480 100644 GIT binary patch delta 790 zcmV+x1L^$!29^gKP)h>@KL7#%4gfEIhgMN$2Xg2F002q~001VFKLaU|L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yErln#1r zqf|Mqq}tq@*d3_-fxcig7ixbPK$ExxEP|#QX|GM$-Ootkr{p_H08aGXrYPqG*&Kbl zSDA@Dn}i`t@cqRiA=q4mts_*_fF5dLWpHmzpgwfvWt^1Zr9CjvNGMqE;1MPp>{1id~U@MaW zL7S<4KeRl{nbbohW{2!~a64bL`oK5F+epu&)dfVx2X+nSxUG?TLuKv%<)YE?48L`% zCEfi{ir3W}r9lhLP4+B~BK`!6?s#9l$;rK$+u`m)j(8NMAkbmjZ*1HpD`V8)hNNYO zJ8HGTK%hFe&(w{|Xj&a6-|aKEi;$$Dexh76$xZR; zS6}73_-$$ZzEXi%H>kZW162jieMb2QpsTT2+g`#`jA2xkxems-(QZOkA;#8B%}j)+ zR4%ox55RU$0b!GFmxUsJc6n|_ulkl!kjkOicN)}*%ITf-{M&!$xXk($O4iCfS=<>X zK(l9nh|So!dA%hPyQPubz&P!|M$02qN@(v3z8RE8@m( z-6HGRY^AWsS^#6sUs1<+r#(6EkK32kJ1J-ZAvpcgE(L|#lUm*6fj7W-$n_`H16%(Kq1Dq$@KL7#%4gj@ta8yr4oPE#&000vSkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiHS+HLINy~Ex$ z!ORUX*5o@s*YIn9qff-u6DP(+3}|Op+B3*<)lv^8=il6SOSB;;B5mtrAutD`q^1ec z6*>y5VKz&`s&bMFPK8CHBy{p};x*5ui6RI>;GcB73z`N&{h1x`h) zUc`i9?XdO`jB>lwe@_XZQ&5P6!-N-~a-q*GQ4gVNW&;_Fg?-4Q@m}6~k!_V^Q=WKg z%nyD!XT_tQM;K_8@)4v{E_GyZx=S&aq87?n zyDVlnL^F36g(YUvyT5(J4CB8l;EM;Lc3w>FHFnK}rq4yTs#IFpzUa%Ydb*gRptt7B zMyE$o&#$I5`Fn;Ehg4nVg^y*10^TH5^YefcdXMRUs0!uGmirM?aGcR$<# z^TgkbPvhWvqCWE&&rcWtjg7s0NP+UO&qX36ZGV;hEcLU}!ix$k8Id*1)#6yhW&CVE z8;_Ao?^F~dvQk3*zQa(@E#!K{=)R8K{meb52`022w5MgvL)6axSN0013KZngjb diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.8-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.8-compact.zip index 65bd0821e681d1b2573c70f93cc7b6fc970740a4..23f1086a7b0596c5affbfefbe0cd347801e8abc1 100644 GIT binary patch delta 781 zcmV+o1M>X)28{@KL7#%4gfHJhgLXq+Nj?G001Kj001VFJOe3_L?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yErn_gs6 zR6`^6+0&r3>}*Q=GANMqU9f*kK@qBJs?*YF%CBl)1oill?s_KzqRJx-D$hpg81^j+ zvp%U8HYfsLvSL*#F5_f-^N($YVFa4;W~mH<8pG^hPv2QX?U+SlU$1z(ey5FLpGUY+ zwqKlm?CLXm+-|4~q;omeP*18m-Br1mGV@Tt5OpHvBkp)Of4cn|(FlKYkqCjYQ`8wT zwmGv_^~2ltZ&skT!R>%fy~#GZnb@FTe9pFY!V@tYsD5%cr{W;w1hvX^wH-TG$vW>@34;2N%vprTczs zJbn2V{9QfwXrNW$je=ExC`}jtkG2{TM$FJ$g**@^*R^6Xd*uxYVQ)o2+zl|LrQK&n zs!8kB3xuL%A@V4{i_@(+fY$G~3x@Hm&XPTBa)4%114N^yqh){FKh5BPFd>O=@liZ! zI(J|I?8g~u{*nm@BPDl-0oQ6*uikvXp^en!TDBpPOS(B@CnkRQtFI~eK`6H%ZWO|} z$INjn(Hy0e7J-!kewu6OdDw=)#78B%G)lehC#UxeZg(zi&$06rc?ws6{ekiOF_$s- zUBDyL)Su;iwxU|SdsDPTd1oC0VW0}X LN(LhX00000A>MNq delta 763 zcmV@KL7#%4gj`ua8&w`2^Gx(008U=001VFP6H{CL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3Cc#Fwnh8wp}^-(5Co3Tj?c_D6~e#91(K`>d`=VBx2OsUhZlEf7#MI zw5@4OJL|-pCXdx(5&r08&qx>lUZGv+*&i>?aT8nAy?ScD8t%gyJ*} zXSgN_#fMkeOOQK7=`|?A!yv#aOwR#lTK(9fXT~b}ZVL46MUBtp0?Q z0*!FY;PDwh|G~t|^aH}tOnxHNGY2PYo^0#thEQ&mfBG~D06%|nFbJu=JeD%bH8p}E z;Za^GD`=}tsao;X)YqDmBv$VkDhY>iu{3yqCu@%VeCkm{04_d&pq`1M9q)_@KL7#%4gfHJhgKXNJ#FU#002q~kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDM4Mh@QdC1D_1V*) zwCrq3`!Xny^IfoiOFqa^z{KBT^{d@%v2k#)eyG!@A>41_rKYr=pmfyv?Rv#1w{D<)VgPIO zIULJ}ma8NBewb+24WX@Cb@8|12DxE>DPZO={8C79ssn<5#_kywIUG9ke~1L&0_=mg zHEZ*_#c3)cY*CS{AOgXH{JrAe7!^%XD)PWKmr}=70U)|99Ua$%^x2wf zEe^WwaDuwClOXsY$sTY#Tr}PJWC78EFw4s;gs52#jXfWla9{(xp7Un zSr8?T*5%o=%lm&#=ug?OmAb>wjo1dT!kKCC{d0SN5UClI^I0lP_jFOX12KeRq=f=L zse8GH`0sei%Jmq390ZnwD!*4Q>RfcN26TtdH3wr#<-r;M(&)K(vZ zVa^Uf+gr|O4?5BOP6V`-`m*U0g(D|5x*2})DhX|dX22Y_YELew8rCp+c7dAVSGHz7O7Pu`-dscf!cb*hP)h*@KL7#%4gj`ua8w8~398is000vSkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueixtwQmqTxVj2F0&rM5sr{Y+vS}!rr)}BW20FU+=h4_+^ov-05d-u6GNYF}H`IEv8P-ff=?VVneqtDt}esPFs3OMMM zC5t(vHcT6T9T1?krN2pg(2urjVLD>^xl(shV#M! z5{w+^bt;&WC1cIiZ1`LzoC>&RC$+tCoVo@QdKG8-3ruO1g*&{g!00g5sQcR=eK%)AHv;Wfyf3MA@sqsXl1I~6k^mkvc${vo_ zib`u?uahvPa!MS|?u7xsbcqS%X7a=GB(J6TdXFK@onsd7$d$ZMDz9)QBnud66x^M~ zy}PPVhb3CqFbA5)>b1Unh=^HWv0r0Og77TS9gt}v-Yyu^j&1{sApN|XUvL$Q4EzBc uB>#2HT>wx^0Rle*KL7#%4gj`ua8w8~398is000vSlSKnc1{nhY00028hiAtC diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.9-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.4.0.sol-0.5.9-compact.zip index 02af66182e98458f3628fb16116486e581ca6080..d4914cd637c194b09319b3894b2a5e60a5b7ef94 100644 GIT binary patch delta 785 zcmV+s1Md8Y2bc#KP)h>@KL7#%4gfNLhgOUHy&viV002h{kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZTGkJpu`I8cV?9_SD={3W~eZrRLSEkaCA?99luDM51&y`bfXrM>d?E z>gb?4phu#GZKb$>tD^V|(be#V|FwnsAuD6hD{Y(np2lFQU!oAap&WJg2>K*M{j(iY zeZ3nhzy#{oJ3DD?j?kpGe#IcnUi$+@VgPq&C@7iZx%oR3rl`KdKU=a z?T&f;;im7W7x5uuoBupS*Cub<1L;4amXpVc5I}&xvy23PUd{xFw)I{8HXY852Orz) zkNCn1^}##%&8KJ!Y5p_VKJwvS-|kP?L7j{I^L_R#wVdo7!D==vX?=#_p3JeNaLJzg% zU$}6Er-wYxF|Z3c%R_Qt@W7m#k3-F)2ughg37S2qLmc7JBt0K5tHf7AZDXM^4-w!F zSNp0t8E=7Ng&p_Mh#foI@+Y_|L%;+N*4kagFNsxuPQue;h2$qviyf4(zq4qkPqv~^ z4m(nM3fPa4;kIqog5?#{UL$_7hRa0JxY1}Oe_1Q>i7XqNyh5VTA0ep{tMN7%$G5it z3e|L@q%<0<`1-Y@Cm?< zv?#&%COKD>5@8kbYGCdTf)>sUCQJXO)>24NO928u13v%)01f~$e}`6!{JkIQ0ssI< P3X?bkN(L?i000002!?!o delta 769 zcmV+c1OEJ&2Z#q4P)h>@KL7#%4gj`ua8ze$FnZbo000mPkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei^l2oFaz_`LlT1n72BNOyJv zDR$VdvS8#8m=FYx&yLT`Hxttip5vAXf=iDoHV&-Xa zMtKqtOd-R66T((^&75`Yi6eo2z*=K2$bEX_> z3m4Gvc>C2G#_Vu69>eRQ%(AOBOXlxln1`Ve#CqY+ZrD~J?-s)EuwOaVF~1I?4$8C+ znNdQZf_l&|kkfyL{l_4~>Zm2*>SXXscjz~>bdzd-tBo&Hw3m6n6_s}|?Crn}slj=z zQ2LWw%89+44{Xoy5Hu_&d~N7i^1NoM(XHiy)~nx@@KL7#%4gfNLhgM7c{f6=a003?Z001VFPy;EEL?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq`kvE0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0yErqI5R; zNWa`iHk_X7=%6~FN1}yorMQ2qqWBBZ)$oS@wi?=K(bkZ<6}+4a+^B9yHvps_6DE>~ z=~_Dq;1!8AnZW(K1Tq3X?im(296IxV zhy>sQ?1Q&8YxBCrX(}RYQIV`50>Og(z2e^(6-`kp^1y3i=dD15_C@17o|SOz0Pz&{ zdc=I5TUR#o!q}gnW_I&02*bxoVN5cWax}$G4mnuWX{)SM?9KGEgGY%#25?-Iri=a? zA77SqS4qIQlUSn0iy(hPpmu$GjV+7bhqmMuNm>;yqN`1+`obd6uuA(xd|-E)Q#Do( z5=Z?kbQ0aHa%@c1Q<@`Nk1@6a=D2pGb#rplb|-9US26@7PYK?b2-1r9_pfPPvXA;5 zsn+nVx*bN=HjCpY;?cDyoVrBdQxMKpU?BT_$vzGHqmXAH}%uoZNeFJ?49<|uKf^tiU0V%xz|uj0Rle*KL7#% e4gfNLhgM7c{f6=a003?ZlRpDW1~vl#0001`D}Cbt delta 783 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 delta 5250 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 I6aWAK0Fv?+T>t<8 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.1-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.1-compact.zip index 75eb6e36546eb769720661f12896e8c804910d13..0d43274b54d4ebc41238ce1a12d616850e50855f 100644 GIT binary patch delta 5811 zcmV;k7EI~aDUdE1P)h>@KL7#%4gf=chgOQvoQYx<007wo0g)L`e;?O#y%sU`Lq3k% z8(|US<+$<-R-TXbNE-97FH-K9mq@1&+0=A#oo)!e&BSqqY@)H2tpV5?K7wRBZt4}$ zBQpE?X)yD}^0K7dqbULjbQ(**;`Y?sQwoZ^(xv9rtB`VsY#g48(P6apaO(UGi?1KQ z4$f^c!H;x6>wMG`e>Xr^k@eKyZ+iEmsqqNYA&!s=_lOl6L!nn217Ro-3J zo-slIG!FBL$`tKVt?btSer^@SN++|Yp!J2xaY#($5gtXv7&?k{Hq z&05=6!$OH-e}&&K&=Ld!ZW{|h(w5ES^-?L@|5-yB-0u!L`(7?ov*zWA>LGBs%*9q` zmj`cFdx-DNY#tR74%uIbS{x2Zu%e{O8(p^ayU*A<6PNb?3}AsL5-tqP>ch7gf7}Kg z4p)unpNU+JvTP*Z^$nZMq;YHQ=613)b);gW%9HtVe=^9ad*;RW$$rL=r@ai**k)|! z@7;tz)#p=++KeSO)}9r_Ru3%>;j3Dd^Me;wYoq*63D%%sk2Y2BonW?#rRx-4Rew^I z=7U=k&=od{W%AVck$XLJ{E&~iJv~-W=kei8HE|r_|Dn~Rh$0D};yP$RD`9p@$)!Ag z*AiXIe?_o#;UkliG%P?)Uo(aWb7xZ;bic~kEh3iz^5W@ss%K%@p!M{q=%8M!MdMGR z0q)&7gW$E|)E z7r{R1?m{2dZgM8o8OVpzpV4bIVJzvKHnK zf7CTr`5*}(h!^j)L>n*TRi@N8)UibGm2qu}4UF=8&i2SbNX<*kM-=_5&j72r6f`uo zb`oi2=K9(9;vMNfzDoV;GPEa*Bb1%+`&-~QnS5Q*2fd-+HoZg}W?3oE5!**?HhlB{SCm?chgyHLx5JRtTdtA(!If;%7htJXr2;$U9ei5x2)7?;v6rnsHOS%(z-@?2-+jwRy$MWp&R27+&yp z4cjHm4{?8Y;{9k%3f4j7rKwpRZ}yO$fh&a{lRGVSg`yEsJDW%o!AXTbVZA8)f9?OE z`Dw%t6!#i0;`an|o>XDs<{o7I0>G;eU(QkxQb^-Q4x;F7~GaF%S6W?$<{ zEWuqoX)a~X4hk@OiV)3pIyy-(yAcF_}x(#rcYrEhY7&j}= zIYf-GFelg7x5Gj`4t(-CEH-+OfA%yqNSXk`m*IQS^?0&Qalxb7H7%VZ8G!X%u4=QN~l{V{}LjX^Yfjzm$if;bfQP z3$?Cs9RBQ-nCY&804PlFxj&%D>eh)`AkIx?C40k`OUj7#sQZZngC7O&fBcP-l%`(2 zT(-S=#c@0V7>LY~8cByv`E6oarl)0LBRx}FiDPu{xcucZouU$u?!MKtZ&*x{R8=_G z)dAqAu4RWkOo!mvRku>eje1}e<&zXOWHNJMVfRuDcR>n{cIQq#Jp(iPYWppNZ;C0$-7S&_#kZwBDTkLjX*OdO_R zBN-g#bT>##mi%?D_7Z&ktbTAl>o3|R(e2IlgVl}bfanU1au$<}f4{+DM7$nYA8&xT zj31G4Ej@L|C^|4?4-N?BS5g@qLe}ahEuj73725+Xq7&%k{^lyncnHcaq>X}N7Z6%^Zn)Hr|5v$^$C(>m}_%08){$o0Wd4?hy|^QBqw|1yod&(zlMa2FpTY1FaiwpSGASr?hN2R{8CkyhlR6E<1=c;Df} zn_haF;GnRWCfFwfdywG8QtX&3F8R z!Qk$)zZ!(v?`d(&&|LWRl!JXt*sN3ZY;`V#h(zj%dv7+O4~Ms)pNpgxMNG%hnJ@0 zw_L}hZXlxLr zj594dz++9_FF4r5^f)wb9Pn1pYQpvg1+?4|hijHye>{Va4ET&b(|!aL;9cJW2FvaR zD3P14I^?5QKKU4MnOXRN?z39T!Fllx<5&01NdMI95Vb(G+IYZ-hZV4In9n@ReqN2> z=y>pUh?OcYsqOoIu!U8ci(xqSegb$K)i8ePKG&C!zh&XxZ+|W8lQpunPUx=#-rNeN z$Lq0ae;VLwS^W(fONyS8USX2nn8faDtLvi7QBdkYF0smi35$a4N@z6)KzQ3oolfG|jiq3G)`4CRy^|k<} z0ZHitA3-TQBax`jr~5e~t(V(_5rWBkf|;~^f9F^|9QahZpeh;v@Y7A*?8;ehCuiSd zp5MMXVsV6AlnYwjA$HGz_|XnH6FZpN;KfC)5M5jqvt}^7Z;ka0#VP9nhx9GWB0jsU z`;Nuu$rd!;A?;o$VLGo1#}qm2+Bk;bWfa_}&%XI93nOV)y}D(yEQ$!zXPfeij^Kij zfAK827U9Ug2OhKD#(`1@(@<6p+{`MHOK3vpovWgAZ;yWEaVuSj0Gt3ZkCMAu zsAl26gwcbgXeT`CE}!z`do{E`ov0?te+t~X&3VVA&5XHUAdRgIeTlji@;|K>7WSmM z3iBj5vmn0}L+PS5@A1dgcqD9^AKjDjLq&qJn_>aVx>WnEh;teNiy~8h@qZzSPslc+ zSco+?+us9DkbCpGK7rGFTjlC+M@$F(e!2St+LN_+yv#vQEM4?AQ(F`PhU_^*e}tto zlZ5!c&#>{(6?Tm90osrw2M^GK9f;+y2eZrZ6onajuflI|m% zbb_nKk9g|5DSYmYTpcTAHSG1ke}$;~moBBbsfl924g%#+MS|eLZsN_ro)xv}3rP^j z*#w!1zI(l22Z~S_QdNcC6{fkwN1d^YbsLg1Pa}7gK*HdcP$)e`g)1Kz-T(1Mx zbhPWzGR{L#pS!b+bRm{&={g+yVg|g-o@nrP0`0jSjUWZSxGp~T79}Zbe;>x>JMh6_ z9{LM2`l8ZYYUQIDqMpp@+bX(%vq;L2v6fHj)tTDsGGFl&ubyVvt3fd3w&_7U%bkBg ze4$a+Y@1@VQBq1Mh?mg79qGz!@f7*>!`xOqMmZY)*V;0;Q~gDT5G&Tal(G-_)@N8& z`8F|O<#rv2(Q_ft-vL1Fe~>?R7&R!=>%^iLn!2xLZ>#Q7`CQvY$A|5aCPF?XlfvyQ*GN8_sPg-tuQ_fqBMHdQf5EedEmA+(J^3n; z$c=Xp4JZKv43H5nFv_TAE*8FK2+*PaksN=6U`BBohHq9dtox^}#m-x?$83$I7|V4? z46!9h9^SzOs8w>8l6UGx_rr!Hyu) zLd<`%TO0_h1a-}9Q0;Kq){-&ZFhHbw!`gnNSqaGFKQ0pNLyzD5@n2yQjjVBHbUF(^ zz$l7?+&yByMPG|kZN#280EH$Bse}b$g|Ke8BaU`B2t@y;5 zmpGkNPOFDQ%8E15lVSAX4u6_J3OX3voZ2WXoiSbS>GtsO{83@GLX2yQf=4NFvg^K= zB`C|@4vbn23ASQg+{dESdcaEdA=a9;FU+6`H#XS1TfyVyGp_-4YeaHb;XVw^?#qjn zCQdszKNmL!e-{$!N9WEF4A=OVJN$|^<)FjoD=CDywpYZ2gp@yk>bSI9{%BHUdY45X z>Oh?wFHle50d~3de{{AHKBay0#cS83;_L5&d_~^Ebu6#S$235s^)jLcKB^mzSF!fy z2w`4I3U+45hLv_~I{8~)X$y)-D$vL%$d)Q=S?Ykze~gDJH`drM7d|-EbYeEu2@F_? z>mCPV6;_lsWQh6F3}TO@dyS>^cd2v4#tRDP-J8|u4i0Q2V~Yj!V|xWy`T+>WK?|)2 zK43J^9_RMeb$e?o-lq3Azka4{ouvjrn^kjvaRkH2SZ(i3**?dsZd{1F_nmI=E!Fga zAZD*Oe~I2p1^YfEaS$Q=6T)Yh`FN5b?%ZOhm3v&Z7=z1U7Ndyfx6;Gyd#e0ZKME zzONlvNiP0AbqZzOm^j1XJ2vr75r`?%n|gW3V+kFqGQOB;gr(O&KKt!XK|`SwBbnL)vA;{7fZ390`- z-(BHPRNdwx`=^G;*%wSy1JJL7?CYm+(M?|PX8MZGj(@EE>n8?II>?Q%HganKe@K8Q zWf!A6U~{ZSZHe;7QQoISHekaUzBWIZzK)!Rke*c9M0}=t5-Th`h+B|KdV%0KW3CH3 zC^ffZ!<&Q?@qnzeARK(gND{Ffi-@&uo<~y=hEe~Ckw@;{j74y^&Xqbn$<6*lg4O5S z)4_l3KWG+RwNy>iX9gL9jX(}sf1r8*e(TOMLBJQXb3>1yyuTwrQabK*qQaP^$%!GF zReaIBnC}6r@O(}8v2^Hz6n31U>h%fS!*o&(Ovw*SSFo8gwy92Uz+a;u-q5mE8FNDB ziRPcNbIac_l>igeh;0hCs}Te1FB8MQE;?~s7m2CX-4#KnXA7zlxp~wKf0+}xNKN4e z3e%eMX2BtXLz@-gYLSK85$#o9^t-$^S z*P*YDUka=;cnf@gQ$geDCYx8twGu0KbZjYkO)rt*qI<$VgmxJuWG$&X%UfQpL<)>x zo*2J^s5w>Pga_=u{P^GWf7B6QX|QPutVemGe7@oR1Zi??oTlo$H@xV**G6F+oT>L^ zN+nlqqq9Jz)Al930E_hL%r)+5z)X4*B+mLChLb5~i&r6kn)EVqEJSU~6kv=AKj$ke zdoOCSIR1QTNaXjRKz`1^EIYS4AeKvC=sHpoA!05C%&CS2Dj>ODe-BGP5l9x}LGtcO zfEX|FFW5~AL9nr9IcV`?-({H@i$qpPv>r8L%Tjzv9lh+l@kiOk%D<;M4WyAA3p$jNgc2r3 zgjl${_D^Z|Q2Q9vf0Qw%MdsY@t4f}O|8S7haRq6?(*sOci}$U)>l@QF#6m0Rz##09 znlI{>9&&h?qQ_ed$0_q4y?qjE0Y4QJfhKrp-EpiW_NzrS^(vD=WfH&oHPYGMb{q2y z+F8qU9bl33>|tMC;8aDvwoQz!_M4zbP8S>=uCU1FF!aOQe;$v!@lP!cb{$ea4H}3^ zXo!*q-7w^kO~NK1THyn6S}dKx9C7GNGgNH%Rm#8JL7~}ar8OdVOB;8WZ@Bv_lH%m= zqed;5tVCT=YkTIZQhFxk-MfL`(!bFKBMsgxacMv*P(vJu5$c&6b@;h~G>7|Oj5*&# z70+lW3X)7If8~uW#gbgt7$Kwpk7s7SiVA;~omw3-Z)WM_is*Lw!2fwd%_156Iz0tj z9$DIh7fypH2bhkwYgs?%zm>GF!Q&GoUgO>P{*=puowl!Fgdy?!3#i*%@GnEM!^kMH zFnoOnf!(^i>|*8ag;^BTXCIiTlw@%S z6&y6m)Pvj5 zfAW5^e+L0id3CCzH~nOM)CPuX>HQdF0AR(F*m?FU1aiR_Fe05n-OC?0af1KzK*o~S zKDzIvKy_tE-Tc4$w?-7)TVkRgCjO928u13v%)01f~{e}`6z(42{41{MGS*#iNSh!jZ%rWODI0052bQ&0c^ delta 5243 zcmV->6ol)LF4rj=P)h>@KL7#%4gj}va8yPGoPa45000Hw001VF(H1F@L?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkE-3y=!Rl>Bmu9-=d*-d|6Dzoh`x1X>SB(DR?4NcD zB?hPbhH~K!XV+gkrx>R5l|K$>Qe5VtsgEnGR0MR{3ZhdZA#MVDz?I~}@z8cal_Rl| z71d>bgpX5hnw=@WL`RceCf|B1Ie=7`2(t_KIBf{}Do^Lwn-ivPev< znEeet?u(W<6cS%iA-C!FeZPqnJK0}bTdwTkWqu1-o}c4E=23|Gj~Ffe%^Vgne;ZWg z7siO*a~$#4`M#z0&U`|cIcxqN*`@ik^-AIBj6_@9EBSs=wo-pr8GW4aSvAWMa<^hG z9Fr?cOy{VL7I@#pq+ff4A5=@>gMraJVfG8?&b zZgQ^j`2dZlOz9QJ&+`XRhoL#eqS%2B!X6`Y;~=rI zH9u&Z^c{XdMFc@;Kc^>&Eo4uk(rdj}l+vy}77PvmhqQtnRi!>M7&aWJ!@ghzt{ZT7 zRJ`?W{Uv99HxMmiSF0ob=>Im^cv4PG)5>e6!2&<_Igx)}m81rb-0t5E-{_K~FQsxg z`pVlguKhdkC3k!AXnm`9veJie7R;`&LSDa7%1}T;M@J;Hwcm;!E2K& z$L4(Pg7h`5*r^U-5D-!r`&m=QT{e9|B~vmA3`=EzM9IOObtl4Xf0(KaG;RXH~fp$s`irXBQ8W6NF*}Fh$ge z_7RaY3=TXPSIi}7H6oa#by)!$y=Y!@is~(kx$Nw-VTb{=$t%pF2NB*uTo%BM=8ASr5R+RuqppCNDL>^=@? zYSkW{VlyK4rtZcklnCy7BojuBzZy2#lMo@o+#*g-3*DJoxkv1 z#>hp>=_-hDWmkMYL#&SD={+kggiI%*=XK9_pHqHI9=j&V&+%A~oJlpc*OY_Qg8cQu zK^uQr$p`Ij>n-;u{I%nxG=y{vZH>Ki5qLP9k6`{PT+LUGubReVA^txDx#aXOb)y0W zVW~gw?-obM`%Y}CVDk7j2vyr#n~musB@;UISwUHFeE$9qCGcIOrQu@BPUL;)xKhMM zp#-8*zFHNh>10D3hr*I8U0Hx#GS{Nc8)1Lc#$g`U4n(`P2@TLYZ&pWHs2PUU<%?J7 z3;j*z z_w6Ge6f-hWg9VnGW!RjzTii^dJWCHq4!~5SJ(0s{bH#ArHB$l0Hw4`v2yC>lZa;tL z>+@?fAX>B^3vZ{|2hXBwyX4y(akG_&o3eGkpLv`(LKqBc0gpDS7= z{rn``;(lYSY0*F)r(YDAP|_cm#8-dO?X+sO^|;z%n+(XczNJ7>O&c`Ut3%nv%qy~( zL-`4#X$1p7ZIpuAs-J)TGie$0m(kd#L!q~B2>cfTVR`(SQV^FCi>7(mua&$R=lZVH z#1t>)zTeI_(^)eS?7<{rQ_W9EYdn{rkrm6m)I6 zNAIu3CVmV$)z(>Ti`7L+b4i#6ZVqW{pV!;y zgX^n#;vQ8Va3ED*G}*JZ=|9>uEKs7ZoWc}_>*x2x%UI)h$De26$y%=04dc?#n`iFr zFzZ1y2&@w?2v-!54Pybl1EVDMZ$iQ$JVM1IKa)nB~S6Do_iPep(4Tq+}v6!F$v z{^OHQ%G*<|{1H8WiMD7T$*F?~V$r;1*buf7vu#;iHEgje`7Gr1g^(KV7GnN}<(aA{ zjj&nmg1l9GRC+*O!+xN_b*$>&f)q_7W_sYDoL8Rh;NA1BqbRN`H;$M31aX@XpjMD# zRYtXVlqn@voKpcmWodtNPg?n?DSMl(yrh6>?z1bRq4Dxp`A^+fZJA3|T7Zr2C&H15 zjL4`ip9*$(vwR+0J@`{UgWZIN4lxTPmO4lHN4O!M;(qqqO>l{b%wS0s(<`r2%3*Rv zkS3B(gWkRme(<1NEea*$MqF$$O=^9Ln-eCJB)>-G75UIia>sxF2dW@q_17GHZOniR z8f_83!c=zpA2qPw!a=^4YSB&4D1TMBiP-$H{FyA}P-Ktx<$LWmS-HwfY@A>J9wTXy96dk>UKO6de62!FK z?6};P?hli3ZZdy@2x&uuQn_4zk7t~&L9IN-LzmG=-;AbsY^&|WJCeE<;pLp_8^e(l za@gx#2knz>mqJ_a^Li(;vweb=KGtC%J680`ky2`{${HC%R-C&`iH{=wm)_VDpghqR z^3=3M>|$h%DN4qitRNaa>2U~iiN^!Uw{_$R6PhO{j`M#3uVcct>p0x#_=u6;$LaZh z7~*-*>twA(Vo9CocC%Hl8h(RIr22y2&-3^J1FJEKJLQ|6sG0#Rld!LU5q?(uIGY2t z_?H*&@#g$%ZANb8Ei6GStO56sEcz5~`-<%N9KE)61FAKuKlZTWO z0(qYgEf{~XbJdy~2D8c<&v55_NfH1!n@J~r=4XRTNptP!OGAoZdla1`Lh#=brE+utmrXm95 z2)PZPx(=a_5yLeR)P8P;v1|WMtRCwtEb9>%esT=Rj00Ss9q3u*;&D*qpmLvITlLoe zEc}0rr+rpXpC3p9ix!m>WI6{_8#XL42AK7}r5cnzIlaOCYRK&9>)STs_PpH-x9?j7{jBe`y3#RP$-@RISgI-?Hgl>92Ut%j0Pg&DZ3AOhGl+?s|4e4g*p_;LS2#L5o8|8FjGFLs9 zE2(KD9^1_?Tswl{dqY>!tTT!((bcse4IAzz(0V{SQG#|T z(30y3cVfA*X>{PG(k>r23NllF&lD$tQ5rbx#OR8d`Wko3?@mH?9|$yQHsF8JpYRJl zPgg|NtiQFZ@cR55FaT_`HL$%W4Jw2)Di4xJ9Z?!h#j!&$h=L|kr)LkerEr| zaF3tXQiC78UEwZV+!XN*Z?yw!FodF5;Kyz_L(bNmKySA;zNe?gy>k|`V{~G z3&|MKxGhV}Gq)hpysp4%z?FaHftOx~;z|T9{XiQ2NW;tO1+Gb2*HJwk;C)3 zlCv&0@V31?K4oXOM)Ak3&v^-+Z>q2FbE;P#uqjxX?=44lPYLt}?J=zqcTN(4I8rxv z=!UJn8>ZUVy`~1=!AcUSN=q&Tc=Hz z$J+dtIdQyqHmW+{i8DT zdmz{y?})zA+Q`r>H=Uz(s>uY!>`JFSF0(;}hM*j=XSLX-P16s_$qqRqY8dowiR%R~ zT`Z!%F=%5OqP<*-o<@HWdk8_ZZBOrvbiOxi!F8WNfGgXRD^z7z-Hv%?R5Tx>piIbw z-f8td@A6ji7L4v!gl0&Fz~SCEMbv2!JhZA2qNh_sK>k{KTBUMx=Ac@{%8(kB!+p_j zXW23K8H-`?04v7@WNjscM~_mz2x-peuVE)ZmuL4eL0KGsH0poHSsUa3KM5E9#;@<~ zLw}YZaDpFC)&}T+R(!H$XKC~Qci|u$a)g`expK|dm>g$S6O#5+&EK*IVJmgeo0RoY zjADc^GjC|fV2kZdPBfV>LNI?k$ON+hjaGCe>*<&LF5fp)?qP&OkK~U`z;NAU{}gI)k#tONUaQ+{ z9nvyJNgBE?fsOqb0oh3sE3)4gxA%Q0Q4HK@>t3s1DxU2tx%=eMTm7Puc@JiZAHfXK z2_Qx*IQFWTpPYlv&Ia|&g&#)w6Xs{!RIdN}erDGbHIRQpO6(@#q%DssBP+WFLE)VF zcgwW@vRvd3$b>zHEH(@(W^-Xa`hMoG84s2Z{4=F&F^YA2^pDu&clR9Qy3M?G$vQSa z$=HSkrA8QgPrnd6NMBBry5T|pUf6g@oLdTn@Gr-={k}DbBn2~U5nz-*39N-qMdKDk8tcXG%ZS)PA~6X(lTrK;Hg)&U%=p0i5f}o_-jT$ z@+x?YI8ki6rHA0W1RRcULB&Bjr@8;knuV);j2T8$I7P}pJK+u*9Ssx~&aSgcbtq7l5t~`H`@|u3)2r(EzYt!u%;zfg=6ff zJw-z<_{7fyLSjDi`vH&0&-HqkC6cd`kncoxMepJH7I7O6b6iq|MHQ&r*c3QG__Iow zoM3RvZR#&d@K*CI?sYeSma&)+(7N#Y|AW(3N>6L9@EyUHQ1Kmb#RIXPX&h zsG$DxyW%48f$ty+y{VXlYWx`qr1e3EJ*FdZ@9ngMlV_C3&dD{y#n#T)O8Z8-K`@yI zNo@lFdW&l^(0kJp@J(P%@PR7|{#t*O&E9#-OPS}u(kVfKbLGtUh|1zXX@*J9e3}eI z2i{|RI%vTLycV_dv@+FgN2m$zgU*IPHjRHAE-ddgA#Y=wD=CWp@${t*Ns!9XNkap0p8f ztFf!TTLj83E8#{-%!Nzp`&UZkI#>c)1tTjj(>whbp}JSdGUvD?+sE%Q{+vqAfVCf} z+pF|(k7QO@|LY%S{I-fcJ2JD83-yJt5@COpIoYgYx%kyqK^cGTl_Udp^m)0*?XF4u z=DP#QHie$o7zame0+ef$^F~N+yM=q7D8am4oao8husriPWSbT^i`c!3Y?CJVkQG?s zE2z3a42V2&{rz4fP)h*XRZ!4^pdZ4>|i002HS BEvo@KL7#%4ggbshgNfE#_)v|002e%001VF!4oNwL?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq}-z^0ts{)OTgmx)Z9}Fio4RK=GCi^a))djo{P@!VTUlW zP30uzNR^pJaB?w)p#T zG#PVtk zH$-axrx_E^Vb2T1tiv>)#ePueV_nDBu@akrqr+r;0X)E*HK-){t zgXl!&BFqr#Y98z}=>{>SFuasn`vGack1Ug4kIW@ce2GUR=M?xJO%d$@8!L=7^S1sPx9&O<6+g0rrSf9CTI-TFdUpJWQkc};A=5{Ef$00e z{T9p3oKPlmvi*{Rm^-cwHNUg^%aFLkoL2bt`3V+3;WfVPm_AyxfdCp7_ByJQ?Kj}` zvw+rh^7IRKbw2&xKAM%rjGaI~!a))>eE{cOIAcTGUC$&@%aebPpQO z7ZgH8QzON=LJbUC4+7HsW{=OHa}NNV--)O)igNjo+DsR`8N-`pB8l%<}(sk0-6noKc&jCWD!EyWf!D3ItGP zW{Sc2y-m^+U36EmlSBFI81CBn`YqLiO4mS6FmBs)Qb&Kasj(^Q?^PU~FZ3u#_U3n~oa_5dh zL>!QyObCKb%SAI%CHEG!lC+7L)uNwqGG2=i~M;%Gtx?vaP6u;U_TwF6~*989UI zBmJ~2_mR0YF2TB?>qtPvGUw@Je%weRWClAEkki(0}zKQ-WL>qJpPMq zJv3z)P6A-j1<{XdHc#zS3$zW==q`2}s8)aDgR69Zx=BO8SF;)FX}VU5{Bhse2#8*- zQ=%E3E>bc9i&HgSWoY%#D0>}m<0FKSwvxr zgq$`kvoka$T0%V+OA(;yPu-=|kKh48PIQ=SM6;h$13**2gqG6&x~DxZ6tW9UvhW;m>Pj~*jRx?Y?Z2-sR~*zr^gz`L!?VV9qcDFFZqii?qzp(aRhj}4ODny1mw0Mp#HdfJ?Gtdyu}AwiV(%ZTOt;s>217-%`laabFI=O+p0 zJ8?}|@23M0mX5Ck)q502n(YFY^m(waQ+^80u^p^kBkUiZR2puwp{IWvD8ojpra6Le zE4KHXe}BI$U1}m?s&%xb zs>+EA4m2%sZWk%3CrNLAlR2#JujgX%u`%UicY;I|S>m|o5U+o4)n!)QbpGqDF$Af3 z<5yd>fE~KqS}hV<)YH1?!r7rcS(E-~EZI|+Z2}hO=&e6`SxkTrYj;JYeQc82gJ=^A zm|)9>d+yOpGoam3niH_=-Wqh4p`uzJshC`#Nh&I z_g9K?%^W$$9`JvX)e7SI5$rhHAI~o%a+RZ+$RZj^o3i=l1gN~LL(DMWgwSQoP!*JP zj!L9{M_jhZ7^*|&R^$o9;x}aog=DHjX+${q{sYzX&(npgp9Ca`UoWiLK3%Ex7M~-x zBB_h+22@BQ3KrNSw|DEgi}<2C?vR3P61WUZ#Hf&F-ROTDwn{y;)tDXiWsy8cy-)#| zpl|oVlB-JGRTF&p9M@|%-VYmKGN9A89r`qvC=M_h5$Q$=#d?u!_0?Luld#nUK1bfVQpPSmS1V@^rLf z2|+Opnt6Yy+3ZvZbeF}cYw_53mOJp zE-dUf&yc1%UuV&*)-LcX4SpqR<`!7^{^R1A;)9QgXH>@YzX!?2I#tu?dp1ze0Ah3 zXcs>gaYlO`G!m3LsDZP546I(VQG8HigA zY^7ItV0zC&K8yw_)Wko9CI1%zkJtgzQ;m(A#{hOp=JGWREsP;;7g_P(=gymP!wQll ziME74GL;}kiHD4FxGY4tV8y9m;v_G7x{iO49J*=#Yxybdh;)IJNA9cbq1!AtSG7-c zPmxvbUQ`*jA0=oq+$(#Xuf-7|&(6JQNV+nF65j^I8^nN}f%UIiVsF?U?mX~ew0D8Q zmP43~Dh#d!`)dUxnVNHqX9HFMl^?sPYIyTlLKQ&xTAQjS6|jJWL_GW5w_BS@cRKcTqBZWBH{{5;013qY-=V}RZit<{@gGnY+9R73{ z{+zBfLiqGOuOAG8w_Xf+r-Ztz@(BZuaH>|Uh9UCVF6a1bCxh1)x%pef9h;_ zp+foy^@ok0?cZD3V7X(Q~2$U9`Cf~>AIvP0^F5cr)k z3A$mqpaSxT5EPm*iMc3rGsk~txq?7If?Fsig_zK~_SbF$qnXZYeWkAxUQRKFQrTI7 zFh6l@Oq>(tj}a#GKOMQPb~MhbM>_qJo%;s%e&r_0WxOW?_DQ^D&;7mfq~7yAUZdRJ zncZC#w;vFZ%*evmXo-%yi|yFb1b>o2jZoWVH^9C=COB`rOe$;r5SxF?@&8>OD|#)p%#Pl z$N!GF)4V5{|8QSiYKFXirGnFr8nW|2@Q`~Yyqd@g*~t!_4$GsS?vm{LM|Oc)FGTmf z4O1Q9}VO%yOKWaeD_?jf?C<93%5F)(!rRW-K4Ro{dc<{m0E|hd?=7095Ey@a#+*%1r5DDBBK83h z1y-OVF6n%TB#lC&EI^G1x2r z^$o|4S4^H=Msa_ei&tsfEw`ncL+e#lpdT=*z_3HMK8g`C)p?SO(LS^<^_h!_&gGjm zBt~Tz-rs{%dN6iU1lCX=4iFcQerM@JBy-n~709^kg6*)x=Ue|6u2iq__`;`j3|%R0 zm!W)9q8>2jK3j3ReCnAxghZFE9?@G!n=v5a6-3Ox9wJKue?&;%(BDq_bkpf=q+|;i!oW20!4R9 zI0`Q1+T7%z?n18&sArYq3f`X!~ z5k#tj6iQe13fxi}o~;yWbltcnNMv~!h!^kX=fr=w!Z|(&FcvBPa+vu*(A-nzI|^vY zhEY$2)nqwWfYJWN=Ub4d2H%1oq+$X1bMad@th`QrdjH%l*1x3BUX~!G`I#PoMBP&$ z9`1e(eKjm!S@e4FIzF`ZGtt8-3btU!Tw^DoWsjUCpZ7#|F7CO*-hCL=kt`fH6{=GZ z1#y4RCdGA^=PN||u@o1Jx<2@S-W^Gd(pdp}n@AP}<#)X-q#Y0u14r-(4KZ3nM` z#Al8jthJ{a#>X4ZTJ}c-OPLh~%n)Xbt|k@e<+t-J-PAO8nS<=}5@-pptMgrM+kY6x z*7iydWcx|SxxtkMPgijL$UrPi2|pVRc>E3ULe1wh0*3KI_j(d%b-55uqDq7QRJDl&cE=Uru7|5F$}rSYlIbutMts>j_{QN)obXC!}| zZ|k$A@|jNhKTo-da34M){JSuvt@P@3ZWBOu4!iL(bVC+by@&l&5_&{r64z4Vbbdg3qMwIEbsVQ2XrL>`I0*RM=kDi7mR{p&m1^ z{zWT7N%O}J5<}oj*xT9WUs7SNW`|H-PNZ;LSua0Z+E!q9;R8s1>&={QH~-WDprmN5 z5!R>q9s%Niph25DaFP$1van1iGnWoley^TjIb-$V*pi2O0UejJ<=AOnrT2e{Wh4WA zyKtBr;ztMX`@z$Sr&wGcZ~l$-`Q=3U)1mOGO=ptLrx|rpoS&$UcJmPWy5^NINfv>4 zL|h;g+4ZGF9~b(92OP$k3h}&Fdf)2K*cxvOnFwF2mx@)3SQ(G-oJ74YM3%-V5yti% zi->A#OF)x&B8n;r$%73G#&Un=>%$CPan|UX+z7nv={lXpempHQEOfjt*yfTPh6CA{ zo2_0Q*Pf8X48b1dQzurh@@JO&J-!~%caVTCRE@iQ37Kb_XN*N7^+LnjcTx@K4RNhR zNs=EgVC@_blBN&CY;Pbt3!$NTe`c$0kIp0BY}Jo?|d>l-^b|c znRA{_Odj)o_vvQoi~t>PA2xl2@0wd}Gv@08ix&>Fo%(dzgi^g0d0nDt^<+~Z7i9(& zlm`wEt-xjrJaK^1*|fPROiADD&k+B2cSl))=;ONU@AKDO-IgZoCLF(GB>n$mHwgex nO928u13v%)01g0Ce}`6cXU6b_6#xK5`;)K}N(RXl00000RTRuh delta 5035 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 B#_j+B diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.12-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.12-compact.zip index b2ea3e78759b0263d60dc32490acdc0a7d1aab22..594e9e9c78de222994da9e4e42185dd4a8d5f808 100644 GIT binary patch delta 5579 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 I6951J0H3hIk^lez diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.2-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.2-compact.zip index 25d29cd4d176d0df52d4f833a57d9f1ff55268a5..98f9966c41632d7841a2aa990778cacd4044c8a4 100644 GIT binary patch delta 5804 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 delta 5239 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.3-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.3-compact.zip index a823ddeed40f896f31867832d9ac236e6461abc2..9d8cccf4e9ce5934a780c148c41ab0e9317cc72c 100644 GIT binary patch delta 5818 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 Q0|Aqb6iEiN761SM00y8*Z2$lO delta 5248 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 G0002^LlFT0 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.5-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.5-compact.zip index 6a76e2343c17163c47c95bb8f3d05578a79e33b1..bb7f19c0941b4e7a846181b4b17fcd37cf713fb4 100644 GIT binary patch delta 5823 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 JtQG(O005<<7dij{ delta 5245 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 aR_^Ytpm`Pm0E`6zlb{qy2E7&l0000(Wn{Gg delta 5261 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.8-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.8-compact.zip index 0e0da75599c8fd34241d64fcbcc60db7980897eb..ae0e01054257003d839c253fe86c7ae019056808 100644 GIT binary patch delta 5850 zcmV<07A5J4Dz`2fP)h>@KL7#%4ggSphgP};4RVPV005)_0g)L`e;?O#y%sU`Lq3k% z8(|US<+$<-R-TXbNE-97FH-K9mq@1&+0=A#oo)!e&BSqqY@)H2tpV5?K7wRBZt4}$ zBQpE?X)yD}^0K7dqbULjbQ(**;`Y?sQwoZ^(xv9rtB`VsY#g48_t+`YcR$L0-Dj4kK#?KjbiW9_upG_t{Iea0y2P9f6ck7{~0yL{#r?NMy)bY z>T~au8kX;q^lc<;-8_@Elhzt`t}r-#)2f@!IXMxYlBKo0VJpt7^_ZMN`GJbGkz(jv zjc9O;JgUpGl$YrKacVb7T?kkR(&qUGOzHyJZu(CjwYQv4xj6F=+SRF7Wfz%@RW09- z&?yqQF$vXAe?}OLFznJOu||$HvjFl@MYAYuh25|I%@#j!z`L66Tkt0PGFY>1gA+rr z2exBt3%JEG-af`{etT zCwZxLooqhI(rAzL6M~%th4T5@(Ri?uW@Q-Z1>=fwe+Ylm${Gbce3lr3|0)o_p(grZ0b|)j#yCNmy1y39y;Pbbr(&mkpOAeE(EoyHV5Z z3q-0te@{QR&4fk|xeb2eD(C~W-p>C$LTyi0E%U@_4zVlZ3|*w(1hu-%Z%$muaZJ$} zgi-Mb)|LZmhO}9*&{JK7dD(*%eueUg=-Rcimvc}_F%ZZbhLq$XKUIY}vPz-x5HCEP zHAGrWs-4xfo+ezd^$k&^H-j>b$t*WwNjau^;hW4YX{`eh4e|2;Zy~4ude|RU*H5;G ze>a!_mxZg0?x9+tkBd4dq{Ys)Y!rk?Mlya+P zb;WGLFOh0Gur{)zL^rtEiwCI2X#)`Z`t%@Zy)|Wou#BG9i>mu|<{J30MFGoo&Z6x# zMncEPrI3b^tNcab$RYRarc{saG80*je>%}h){7Q$c%Fhx(G&Oi!OZ$K*ZPGD-q~l^ z=vV*nI%Db_*Je7O0Gp>wEchS!?nLa_`_;LW!D=rnc?YWAS>5-1Ep{kNa{*uf4x#?| zX|@k)_ltWL^38sk6?$D30r|=s{$4Pc24a!n5?1-z@nasA(-1PP8lx>VW=ny)e;>#o z`z8-%st-*hu0YDMp#L6Vpx7t+U2@uu+NrbxDeaM$Xiv@taeuNc>LwEn`Dk=om*DYxu*g5(q;^SnwR!TRjaH}E$C)$K_vlZIG@ z-QS?E%ZpNMtE-!ZbU(%neK ztMQQXcN`d{qhF>VrFs@^&rI1yG z@=mHiLhn1ZWvwIIpuIVMfBzBFW{r{pLhFK#!KmyutC^mE_1*gje&V6zWHPC|R|(x1 z-mP11+>t3^l8E~-dJ=e-F(Qh?RcvmuK$^INghP1eflm=*sL%@G_H`wfH?9Pcgt@G1il@;T)u<`7GxY z%S9tl8uX+DGX%EO=T*!}A+xy-xTo>d71f465bm@aW4G9>e`+rD@X2jL;`q1fKir|2 zJ=G2(!qNAlFm$X498nWF5BuI7;t41bgt|>KyKV<@ z0RjHDZ(jMJaNiF%1Wa+2Wbu1Q(NqeE=p_gHz3rOjRr+LaP|M%Q2F;gq%%_sOHr$+x zkL??;S_gf91q@>Ht&LjOS+(6xeHNA-!sL9e-Xz-j$Wd-$1A0h@r0BaL?Ph*s>>0X zJ;gTY~yU&dd9`hi$C^Z99VSTy6MJqz&j5=Sm$D$Ux7VwVBGZpG+Ql3uu}k^pU@K`u2lplwGRb?CGor5xHj z3_5R{MpH)pd2qYVhleH78G9~}3P6+pjOI99&@;E6p$TbmcQQEYRtNWa3}^FPw2@k6 zFuTMIMEdzww>yRjNcTfB{$b54w>JWme_gF5t?zbbWVuyHu3%#*Pge5cJb%%d?M|YZ zsZ{UF^L}L7_t|A8K&IPm KHO#bw$|nfr*!!AR^MD(z#oQLe}hes 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 delta 5292 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.9-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.6.9-compact.zip index 53b706ef033651d1de00d3285bda539a51780554..b3a3e5f5bd6c03e94dd4460dfaeff2bd965d71bd 100644 GIT binary patch delta 5584 zcmV;>6))=gC$TITP)h>@KL7#%4ggYrhgM`{r8$EY002b$kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZUOjDFO*}8cV?9_SD={3W~eZrRLSEkaCA?9G;8)Rf*E&YxJK73-&{} zI}HIy*`M#-e`>man|3OTMro|cm=T@O4B5=bzcXT2&@Uo_xt_+yIlorD84lNvX^5Q` zQv&j%C9}Tz5yzNqq0z;?2Zb&&8RJ=cVI~PR2D;V&8o$XO$PaEukn=)3w)pK+Ogfq{9+(3Vg1rS#bI$Ce*9 z96URn$Cx$USs&H1KWY8V%e2$y_K#!;bprWx@WR_C_*FvprT^L;>OCA)D!Sk*I(lID zwWvG!g=Kc!YSuNa6W+8l;M+8vR6$&nImvLH=MKMJ;p&K3f5CyKF89gxBvXxQ8>?T2 zX~1EW&&fD{0Ik8#@-UB-g4b95WTB~gOmFp{CV1U`AB1`uD03-r^zuG_N4mF(t&ZP< zQ;1+sJ{YSv)=TPF0h%J34aXiLA-uQA;PQku%cg4>$$AT9GDXf9wiB3QTpP+S7ThPzfaw5U!NEXj#a0XgL{Vbi2=g2_38X1LNKr_-~(W1K9*jMG^-P^`%h~Tv;Gf71W*>SlLkrO!GAha zaPB;+s|x?S9W<8sTtCe0Zd7_JX_Ac%rJ%2}a{0J@kI5|mmLtq!A{i&l(gp>zfci0q z{o*x$XxuJcr2xW7PE_7z#Fk)JW0jIfQo;$mbp`Il zp*A!5jy0nXS(%{B&!n4&4PF>#IP{m_c~biGiF#1MOOs_;y)4USFyj*~blLFp;#y@+ z&i!OHF$;y*hk+BtuD@e&IP*76E-(aEz1w1cLW(=hW7tkT4D-YMNsVdbt|gphU(lXQ zoS8&d!Sv@BBA(`#dw*v%k@>qu*-%kl~N9=Ns)$iu?l(CuePjeaZh`k=jZ< zpr%$Nx^fd?K`=FQjyBV%CcQMj1UM&u{K&;l+^w8O)6xb0S$r+TG4W!QS6rFPmw0Ew zcsFCKR9FOsl6E9<_;-VXV1F@>ig0n!zCGT3)l%7x0FgC{cn0z1qFCIyJcXgWi?CfJ z?!Qda^ssS+(UJDm1`5p6xu3N^PJwf@FS$3OG3OcXTu#5&I)J_=1szM-u%>l?`&>vI zpX*$q%#q>T-q+FQc5C-CKJ?=wl}_Z7p%h1mFD2kr8<7gGqxCYVqh(ab-QsiqyYXh- zAEa<3Zbf39n1w15>dtu==psLM`3&iz#=?`ch&;yQYs0qUAji})3}Pw`B=|ZK$cdg~ z0ZaN#1eB_DKbys2Nn40Lwy-^aMOETj{DT1Ug-qvZ7LT&qslW5;q4>Y~XD!|BiZ^m) zqo>{w(%bkI(04P+&RWUA&3j7YKJ2AO`TqR({ow`!Nv&61U+n@p*leT4f`JrVkC<e#%HIO?i_Yg`$sSi88mWGRgUsTtSVfR_H(G;i}50~0l4s<-K zgGsp804V$VF0NppubrO^%ujwiu9PmHkTF{~Vai@vh$Ih^{&o%Y{z!pZr# zIvt%93T83I!W`;>sJtRi3*YpRb47){oEFd zl&c5|I2oedb5wV#BNno-+>Ov<*pR~^!?=aO;HZ!cbi|ML1OU)GU7IT@^J?#hlPc9d zdjjrz-mg`LFm@vn7?Ut|1IxSP6M;qb#tNM%bl61oLNU9}I8?(2 ze1T2eK8z?SG3!SG1lE~WK_;Wdpq-ECkV@_lb$8zJwF8!EMzt{KYLXC6ehnfgPr&2J zO-!0U(yETy_W0@lZVsNVcU_?GAsMKg9e^Z-@Rw6seRCQ|3>VjPKAT((hT!Ef?RF6k zdFGm-kqR+?n++55cJ$AgLrJedD#O3LCXaM&X45mr<> zT-bGP520k;lJ!fbfSWDWTyR?<`&kSAkQFF1GR=zfVY06gUu;RP+fE||lESG~pS!lm z5&Jc=!1D^0+NoQb_sAtxkeuCQ3vJS^Hg(L0S*Cq|lO9nwJC2D-nEx#Vo3cCivwM}i zug%DeR#Z7hWQ?Z)=`(?zQU%`OPIlfP9q9kk8chIGN@*3wRCPQu??)K?38Ya^kwyZv z*I8Es>o)($ss7zqcqyhX4ko7iN;ns>DSZ+bXil~1Ek!o{GcAT$alW>Y|EyYLls(i$ zd0}6FVLYo%jTab5$3!mo7^N(b+1^h5@5ustd$(XnJE3Ri{Ct^Ym&`5x`a9^0S@_wK zfTtZzv!ZF-(l zJ$l-90<(TUFAo+P8pbpE;$!q5$_-z4O3;IUJ&$N64kOr{59nx1x2WsUJz?{ro#XKI zY-BS4F*w%5m!q0XfeQ+NfZV!JY)7RE6`ZrV&lyt8_#XDo!{?>@LNmbO!(i|@c~nQ3 zTpd!**lf1qSNag<%)p_aYc|9R-I65Dk`d1lqC38TVABUy*x$V_-5bY5m1zPLQia1crP!uiM8rWrRoU?I%g~`)kRaTu-=v@Lrc1 zn^}%})Db0>ENhB=b0zt)@iU@Z)?wsT3rLqmM_!msn9-btG`**FtPew%e~OOU(KR0mJcH2vT1V5KNCKv=azYqO0Tx+c;7Q>6iVVqW09@srI`!x}Q z$LO%B{$$FTZiQehA+>>h^n?K>ut*9r^W%#2kUq zI7cHbkaMhlMh!4%H8|ooYC=!3WYp-|38WcbUByjL?{vkG@HVbVxRRoO4(Frlba!kF zSpqbp6ELi;8Wa2Vsvz`=nr& zXK1=rCV3BJ+7*{I|yolvt=QVS(QEYoAA4C3mmfLx!^BoREj;5v_(I8HP8K7pn6tkdI2VLJg>@a&>wQTvwZbXE!gA`uDtYau7@l4>jcX3|3JFL* z1Svn~UJ&m|)Uwxqm3Ep+D$43BE)OW&T_WQ1Fw*2Vb4b()NzpQS_<8mehf}!KT;8=` z4d81Ns+HVC2U?8SsMKk9MPG~AP{p=bU9+)xu#;Io{b9a*ytW-$ z4#?PjVO;C{S}zNGFFF;qEDQrVZ0vJVY8&mdNlH$&_;-1Knb9J^eLdK{m;cq3k|seu zC{YT5s`$$%%3ufsl1N4_UMb2`w5f&6mvowEDg_mTV&-!-Oi+SY5iZwxnS4Cqray?s ziSn3!4IL)*OeFhWfxLwY8-)-3Rux(~TKWXlG`3IpSWqDnOtspl_d2N09`M1X>m?Pw zLsrTnFRF2WbzO1*tw54!YzxP70gtvJ!s3g|M^CFhO>7q73-MRrIQoKWn!$^xdc==- zl7nnu5@>|8U7_!aXP87-Dtc|HUg3oSqwS}xXP!blU#pWqU0R)7q6<_veG{XnU}-Qz z8$2B8)lzxlkQq+=0g#o#b+TZ`Kq1`T&m(f<8D~s?-6I}@&MNTO^uk~d*ti9ek_Mo~ zMRAWpWF~om1mbRYYw-~ISw3Ozgdl0&lED2H7nG3zi*1ym=gFupe5*(0xRUB8)=ozH ze@;L{t)9TrKXcg6Yix$G$cMLl@B48p0xvCJ$B?9l^5xiC{w*teFeN+@j2=WCV9pd)-^Gmf-3D`UW^eAyWE)zE4xXA{|H~J zH&3d()D<|9F9K{>Fl2(@p@U5}(1w~Z2@I`&sjwpmWdtKjL2nnv>Am9Ze}cz5EE&Oz zJiV;j^)35(%d($>sIkc7$tE_Nt@)Ea@M1FMwqZ*u2C_k2fH~}j3H!P7G7TMz_d{u~ zwQVoNRS$i`VNJ-e`o|1Xgn?!}NG;>qSMUMtP!?7O0-3++NtXirx{)Rs(tx8<{+PXg z6R?a2esF9h5Y<>Q=ZRahAoo?^dXpsU^yUD7*VxP2P=P#r*=iupd_-fc-&)CYH7Ldn z{FV!YJuKu!Hnr((KPjX)vjFE6phNdV+d|sd^uue8v3T%33*=D0MnVfJ32K4q9_tE< z3@Qm@6g&6ekHY3AAuHg@<JNj)_1>O~Q0+dtfS@9O2^+r+sMp_NheP!^faJ-pb^7FB91VoC^-+qY&P#Ql!~&Eot%{Sl3uui{CZvfHI4K~?jI3{H>oBQo@E@~JH=zwX;b2>@Jm;S? z)*S-1U2R0JzqiR@P4;wu#M?M;mW>rS+sME%9LZ2gNrCG3b2Vu@^ild1_Bq-Pcg|TI zB=NlCHe3IKR1<0}w5^+`v%;~u{kvuB&YNTP0tH`oaC6PkN6hhI!rORL-iq5waypLG zh$htT9RP*nF?DZubTyiir|P$u1di)UC*-MXdI`5z%o7=rpUk6w4F*cN`DV3g(qxb! zPFoNQe~70+NB$OuEGsB2pfkF4b4R^G1{>wa;`6`xtq@=1D?;Pd%VvzU*-y%g>Y{ap z7*ETk@AynfgXnA%G-}FDa8w%SDH#Gau)l7KQA1L)&~jm@mM+X+f_x-NjAH(Oe((JKY}WfM+`+&?nie>d(1Ig3xA1#PFHrQ)+?4O5D(_p7;z^!I z)I@`0#?$$=DOh(s{o1Gr%cyk`SmHAAo(u`xlQU<%2IN#NazxoGJ*gpqj8~+few$rYPWqIYyjK?r3?$OD*FYq zE@h>Ca#0179?DPNj)wSpCICCD19z$nAYNeQSX&~Fm5FM6;#djFwe44CAm9x2JH>+| z-qa5)o_t<^p-Gnfm5cTVY*k>;^prEdFDe?f}j zc4xk^l*dM(M8A03Pf9D#2#gQx_&>auE)>pFnj$|W*$-ngCQSYD=9^GU0Rle*KL7#% e4ggYrhgM`{r8$EY002b$ld2O+2FDcu0002}8`R@KL7#%4gj}va8yxQK5R@A003*&kr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEuei+_<~s&z4cC1j3ol-<7`TemREOZP1=pb!y{r&yEu(^2!fHLd!;=zg%cm<9WY z4_YBCaXs6u4!Vt$Y}+EU1|L<@en35@nUtF;e~bYdRcg5CD503Nj`B8ZGOGTasE=Hk z2FIl%>iV~Ew`9U+3wHyG5QQ4)18Cr?Udu>^X%4zmr+0*Zi0kpR)7U8hh;U{{vVTY) zbuGzKH!g#Z)9-_e8!>Kkrt>=)nBaAf;*Q#acS2C5HK&Bc(Tg^(^?YHoZH(F2IWB=9 zb(W)dU*cz1m3}EOcTO2?M8S7<9P-+r zCh^ubMpsUMv+&jM3axB~Bj>9I)=d6>JFRI_{LTs#o!BDg^W$b_cySM!RVpA7yGB_} zmKKUE=MUOb*nS!RT8{WLqC92u<-CZoXv8m<<NE17ncFy=H7L zjZe$(o8s>O`qC`noWIw93krlu=>|N*=+ukAg=xSkwa7%p9^zAXmUDX@l>W z5{`L^cQ~f59yuvhRKi<09Z3_O4P9KdI5XHc<-yw>*IK@DFcX7r_hVE3@&X7y&#-yT znfsAZ@=7D6R@n!?8!)DOJrQ8RUQ2j@h8+f3Kq|JFJr7h{S<(+Pu){`Y)FLzW(| zPh{!VS`_2R^|x|>6evNSF1I-WA||H048on6ezPeUK(Xu{@l=!IfF48$bYUk*jzbpt zhI+$xX9rC)X=Cf(k=K>T*52(+U1|R4-R6JcEk0v)Kb8X#n0a>lvK9F4TgO8n7;XB0 z&4@rl#iXuV%Hf5DSy`-K(~`AYdT_@^N+|B^VkF1{P8HxBS~8Ir1C!Hh_LpMEL?w0v z1DvN5=?~WBtAe`Z?~qyoKt@kZL~LH%n@THZ9e0;2#hTp#Bam08QkP-b0F*UMQMZ;2 z=8c)Fj?rdr)6hW&?kJmC-)#G$k(u>>uiLk20_bSKc)2UWn-}Isdtdq=3IM-ZBu`eg zKJ21*Nz+({)#E?#tJZ*qUa6rp-2~H^_>9D-g3`Gzgo+DDOR7p_(L#T zI{Ny+hZGI2F(aI-uB2dY@rLD~eE{itxO(zxa4Mv5AO<2QgYpS-klA1LO1qwaN9Tc0 z#5)K~f>=nV_K}SF+C`|eJeY&yxbCQX$16=~P;oY=2qkbagQL)91*5seS608;_7?;( zqQ5S0(M`|9W(0DflFd5}=R-fmHK78Q@x@T7zf!8Hq)Qw4d$)>&<4;NCEdfp4%-tyh zpOS6KGaT;aV`vOvPto_;mLzD)EC#wbvO-KB5SJJF&Vk3Ojy*B4eTw2alo9t}{ZBk(j zS#+atHc>w927T*_W$k%?zZ>h2Py(Y#B@bt@3^@Rox_$o`QB8n~fKoEli|C0>Eb`K+yJtxs8hw$Ywy;yMIp7}8?F6Tu;a=+0U!DEq&6o-dM3s_!bRaQZ1!1I%1? zpl3GYBJqHrXi!FEfqAgG5+Tmm8gqNklPNdLZ!>e<@J=Z0GEELR+)Vw(-uMuH!0fCu z!a|z7NJ4?mgqq()ZIjDWtVoRui%*nNMg_3Z+QUP{qC|y%e@!~8WH1wv=2iy{-0DQX zT^V&Y?$sA+Pue}v$Os~ujkFA2QHk<0K(oXX%!IH+9q@P*cwHXA2L>yUE~8W@;ox8H zo81#1gyX6tF8ffJd4B2k_ri_U88r72CSLB|Ew|gCfG@seOk8T3<+#&S!?TMp4QElV zelm7KpUbj;_PCntXu(ciOP8C>h+grIE|9AuL*H4vDn?283kFZmYe7~;Z_ z;<3{os>Qx5K80q?-Z5($kk<2Q)D4Gg91WJ|FgI0yYCBq2Vk6)PI8YdBPkYB)5Kp1K zyC6SNI^(^#OKjJp@lJrple-w<{b$Hy9W8XR5eU(N{NL4H^ao6do6c(BKTC04jaksLD=&-a5CjItAd-+b(&{eu4z3bTpKLyg_$=rKbq&zz1S zv*CIJ%!YT2z2=RJuD^g%qo2gfIb}9(uYI|X?i%He@SsWtfxgZSJE+>OO8Y(bnwoJO zsxv+g!YZ|!i1ln_4lmyFACM_Vt*Im9w0U`_$f8wxMHJ3{`~nGHOs^!3IOX8ZYckz` zJx3a`kK#~kc58KrWy^nVogS~gGwytFU){d+RITf**cTBv=u~d3+aoEmHbQ~Y--61O z2ix~@6$bxO6Clphnftvm?=e=?B9K{gBS2w(hu8s161}yYpjb7fT-!pxI^P@7R{jx# z_g3YBVWtvs#XmfEIz$yG7uX%;utkLfglIMCGi$(xS>Ynpq*6oxdy=-DOxWdRlXJEg<2{N?kTvH z>i|3=!mfq zf8>C<{jA7yXnO2R3t@D~v%9!|-y>5S&S)Hf5b3vtG4o%%CdLayEn7x(mDdy9pTx_W z>XfHw*lQ^>NwT8wg_rO2y1RY}v(y{luT@ticXYP=sxaOj-)v_%Anl^*8@TV0v+GGR zOp$DSS%8#y2+nUNgdN$INBRw)G)RAc+u#v@xHf<$ z7r4Ho@#503@a!_?m!>mTv$@9$EWh1CRV99b+CqvMyo9n?>Y5yn^mg9M!R91Ck5E3* zY4B>g@ISts-@D}fef70aYPBQO_oQfsr3-PTg)mH;__%w=sqDDCr+SCP1_S%{y*aNni$0(?zdQGgxcVEhmYlr=19D;*2{ndCml|G$eNQuy z-8%B~@}*yhH0HvJe^v!ItlR0~(0KxSw!oNFJ(REk3QxzoJx^PI*btU_j2;Og0jM-U ziEe!9pOx&e0-EJE;s3xnAW2h!{V#`NM0-sO(?K09pA+EV@87RKH;%oE~G zF^grdBMhIH_T>TFPI^2iv4Rp4N!o?1e<-9M$gUtOf|dD;N2F5c?Dr~B*Vy6T?>Sy! zS^mgTZj>(MX~AHB|BtMiRz_N%c=Xq&zjSdX!6P_4@C%;`H<`Z4LYc*T@z?-=byao{ zYp@d0dAPIi+wk;7YMHZ|OLab>>_&Yc2A#iH2&+GnGbQT{}3#m;6HtcePkVO<0gPQqC%qS0FU;YApVL7kxi~ni+N}vRNBTXAn{H^Yy8t%HN)UPk~Ov{zuFWgjgDvNQSBeXy32ctED5gSc`>v>cI?kX2m z-vddL1Ugjxbj&1+2Y=vIgkAS=Al30%k8OB4bM86lb4(1pf+GI+Dp=Yu)?tct9nd@Y ztzzxl6!g@8otbofYY5NdMo;)1!_}wRR*WX4@i!Ld3eduzAIsfv6cfUOaqWjjRz$9c zMfTi0UHQlybK@=zg-{Z*F;$1|^v9}WjmfdlmKfDPM*Sxjb-~#@{f$|y^6L*7;oF7=jNXnA>gz)Ws;td@XELz|lqeBNtYEUn{( z9mUHboqR|q(%jtD_)1t4oF!2FO0BhMoJYd^RQ$#F6%z_4k|VNb9vh~CJF^Hq zqVKQ+9sQ4r&pCmjLeus$d+L8(N)5X#q(@ze>)cal8trjg$ykt-v76)-eJ7qbfG!_< zDr@{95Spj;v#!SbU8I5NOq5+hs>W9WAfz^b064Kt0}q_ROwf&9f~ur%H#x+l6|S@_ zzXh%vgM0=KU4XK`lUfp6I9?i}xQ+`R1uSTmNO46VpN;rP?o=ljIIaP=q8FSTrd`Aj zdqy}~JjQYB_=Kln^(IfEc{)B#l!ufJ2Cy;9E2DvgubHI@7|9L+J2{!c48w;ws905h zQ{*Hq)U0aW9y-oCl~RMBUo?TK9#-m=e0ts}U^``e{yxF0_6-WK-2o5Nvzb>Yz1^NC zz<~P4+I`2CtPN+5cBTUN6mswmA-2Y+BPw(0$!DkUt>Br32HZ<=Oh-&eWY55O8?xzK zrQy3pvsQ?xA#`nDGvf#%Qc9;>*8^IAP5{X?bh`uHz^2B$y}XrxGcfr)R7c?!BpB2A zaZw`#-d1T_-v6ZXE}J7#La}@*ht^BCs&0!))VvKNL95eyihGausie4x2|=B8&$nz7 zU&{$zT7mUB76Eb|whvr%oA80cR4g@;B~`c1aWL-I9R)YpC?7Ri-|Xj<;<+tPV#Bi>A)&5`tfG||uhafC=AM-fq$cg=#CWV&!SU)+ z{l_@xakJH>cT|=G#vB%X56PIo$Y!6I{mj2c20~5)C4iL$yxm{=*lJggYYfN}XaXANK&zpPbK#|ie_|~`@xcPNgDl(83j1No zieZLBB3RDuYSH1T4r(^J2}Nl723*@np%|{Q0^z`$Bo4)ac?^tto9{_~3+I9TiVNw& z^}T+)dL2p_O5c4@963s8G^(VTW9wMvv_D~liAZ)zoe$n9|FxgaZ!g@9cW}`RWLEH&;Hz~{rM=`o;mZ6x!xy24bA@KL7#%4ggnwhgNdXn_nIk005@#kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZUOjDFO*}8cV?9_SD={3W~eZrRLSEkaCA?99luU;|`=GB({MtZmS*ed7dw!TPcpbX*<{?isT2c@RvmU{UV>3`8H`>SJ1M6XgkS*Fc zXUm(FXGnTg_9hM@tFCil-HbemjQ49q8 zQXNV&rtbDPRCz7JQg!#4Zy5OioTo|Vs$nKyF>^y5K&JoXPYi9tVvio z$XlQHgZ>v^3e2BF%+Tgc@|#To*QM@NO(lCB6|=zWoDNsi8~;c9NdD+NtH+6Siu%&S z^`1J1U=vDy9r5ASl30t3piDPpNQzCX@%0V^kpQfJAAX~{3PbI(HS##WpEzfx6J+nx zEs%Pe^7AOt9=3h6=3JT2v_VlnNj*;!TrQ-cZk4PTpx2O#bI{XI#SYJYu#jD4uYF&EUg{oXii>)6h?9rTK-w2EJj)Oz&=$k zMZOh(b-kr>OR-fd`P@AaN7QT17q36nJ^t2$p@yrgE-clvmEcM=DOCOa&<-~=O2b6H z9CvEl#(k|WgFtufp&_^wse(So6OV6@p@xT8#6sF26p_jr(xCdNm`N{35{4;}r-YB2 zTNNnE|8eN13TofPPCx(%ztItgjV4}1+Ylt_C*T3*SfmJS-u;c(=nwD+mLB( zWINLm0%v$h<^U00Y%J8dejR}oZ4z}hC1e?CU|HZw9}TvOEIZHLZwdP)j>Ej_|Myvc zo)-7BV|qaI7(%hZu3VX^(n-|2qutqKP*z}dNl-xERMRZ-$&OYVwo+maKf1{jDdRl$ z-PgI{e01)L68&!7z911s$9AtV z2o{=E|L~*_mua8v%GfRgUCa2w1zoa0CkM8xQ>vux_+2z0=H6_eF-j#!`2T=H&gCuj zZw>B^19R=@C(9tFb?dGnZbdsoi(O5WDF8e}5dB9Miy}x90S8n|BUk@_ZM5Bg*G^CY z;gC-XtWO!(Z+Fs<;1bylP!2{zLx*9Y|9(*4810B(yHoS=J&CN=W? z49B5`v3%Gha=|Evz{-_2WN0V;(=6bhTR?|_LfQF(mIMzU4h1f8_B zVD=IZGcHgeTS60boVy-*JZL<$?EI z%eFRDRR5{hhR&1J=}HVl@PMPjK2~uE2Fsx3)#`XjEVT!J(Z4Vmhb3#>r8V!W^lL>q ziscLlE8M@czo~s`my0L!!#90FO&To3!O>psbafPNj4@-P_j=k_NX3L;7sXtNh0s|& z>v*Rq4OW1jA`1D;>##}5xl9{} zc(QiOQ$Cn~I}5`pT8(4AQprK)&)=XdTc$B9*9MA3HhgZqhEBg;9?t4AG?@ERRE8X(^eH8gEr1Qx@1FBSw&dypTR0OpUfd#EvkF+@LWYNQk zzL+V$^hz{{mnAT2Z~+W^hF%u1swp?KX3}uxVRR6GL>_!7Bv38FpV$0xizj4p-u!b! z-jgd>GnI&KiS&;KkzyMjitKs^{sgi#foYmkLZ=XCoT#P%lbxsQI9@#^5Z>!wL};g= zBwtsG*b^y%mvjz^>e~Ql5&Ife0J{R6fuQBT7WT5@`3lZ6kArCa%hZUfaREURc(Da+ z9h+!>j?gmr`xgx>s!|awnOzEhhvEBdNTYO`Y*M6057n{Iv~o5ixUapQSA)|nuXJ_xI_K%0m)($hVyf-PQ;3LXvnQdk?+g$0 zZ!U|)#`XxcHIFs|n|K56`*~_n{{k8^{}{f12)?va^}uk<4`s!cGp3Cay*1o=2ct;hWR}aS@0#GzzEtV#>`Pp69~D%KbSL%ICyZl9n8h|6#KseYXvE zZT1s~htR1r6{R0uOTU^9&df`TxTPX8ZCnEg(QjI_#j9$UX-r!tDO4q_h04u0XGDU3 z*z;e;U%$E*Lk~=3A10;#NsI~)&5me*YrDTc+J~+;+55-e39MTUoDH?-ts|Ejc<&|{ zKX_bQwl-x3AE8T7wC%Mwjx_g$#aid-x2xJUbM(w23C^s6Az3lABwW;!TLuV+2542) zdBX%i90Rn3$U4Sx`DG&)QYWk-ExVk598HHe8MhDgpDHra=}Y~qd#I*R=VmM$szP1P zIx+mFeOXi7ZrmjI06UW9T-j$FPnz`7U4y{GJyt*{R zcU)S6{$SXj%zW1*?gnFo!i9Ew2Zwz`{{iWIk50mfuCOJ%xpyl;SsY zQu8-{Z^c*OP9?cw7=cLz2BGSId_3m;OyCJR@oA!P?gnEAtGWAks%<`#(vm+>_jE~xFF>=4 z!G5#myWClOn>^qGf7+p9nOqTQ*3rYBIP!qW(x(i~eC6?WEA|>)nVsN&m(!TvqVN8F z6Oq2XqMkYXZFdPa3?s3H3Ro}Dz1aJ=O^oFecsl<>*TpU%_42eM^#jQ}wi$dZh{H&^ z?xIRHalLWoy$?Cp#G4APNiJQVmjDyIsf^4R5Cu(Y>vd`!pZY7kpEVH&G8Wn5T50=6ix=N zJp>Mo{|xPQj}0KVGhs)r5g`(+6nKb%=P==O+Se(Z0+YmA#)?g?q^ad!zlnA6x0#cJ zQJtMo?Q`~L4WhYQ!Nn`TO6dC9@%$)-7z7%Vv~;5-9w#7AQqS^u?8Zo5lA)Pt`LQ^? z))_{l3e@al;?7ckS58ya8Idos=QQTc(vn=uL`+P;!qs$vHrV}li3?vPt`Pp8= z1#?CPezC51DTC}eZh_{z6aPxQmEdkE=T@6;w_Pd2f9&6A^WpEnl$D$8_U?u)N6ohG zIRR3BFDb$O4R@k%Z2Arje*7@rs<0iZFGb-bXyv055qb_rf* zWK^^;<)+@*nu90F!K#0>vPz8HDQ!AWKf1<}lgT!`;Un6oVSj*=%Af)M6OQkI z_&j1%POq_mx5=V;k}G|OTAAijm?4K2P7X=y73HNo6}70Wl94vVfl`Q)S(pRIx#em@ z(OMd6(nvEvWrsSYws8|D5fw$QQlXd&lgDCzVUe2lMy%3xo_faA*6rM;W_aSa)&Y&5 z7zI{t?wE8KmT0__86}YUxk9|7XXKT-WTzNu^5LJca7fLrK)m8WaSNbi?~?B^Fi~ty z=>Nm4u5geYIb#w@x+CJvYDpz4nh|qKb~c+3Tu)axy1auu!pa{BKSmDT*{nF-k*olJ znH0lpIgjNuriME}8=@OD)?RC#2CPUEg4i8!k|fW=WuLlYUdV|K)}4o$t>u2`ycF1*&Z<`{UMR-vmaX7+@&^n82wgP*>4b)^P48-<6io) zbs-vHL>U#SvUxI7K<}JaG%zc*Aj=Pb+ilY^+0Gq_SYGNx>YYEXkJ-=<{njcI2tXc( z-)znEjq64pappmPkVLdFB~_e}UJg*j&T`-GKq8O9x!qzEV^4+IQ4&FG3GSmZ+vOg| zD)ayWI)^&-{@ag-VMe38RN9WssMfB6B~*kwr1E_=4-2e{8HeskodP2+O5+}Xm0wXO zmyl*{_?I9?MQqMNMTrWcTzetunxr-_*hcveDXjOb{Q)e=7oMj{7}#|Ce&Y2OA_%H= z=tR`n&?3>r`N_4?_WErNz7z$@&kXQSeO;&I&jvCE)D+j-fNa&CFB{rOt^)R~;WvTB zyQB=7Jbrcbk)jT^yhS1FsqTnGDfg=_Ck0zcZ=&8biU zIG)>H8S}8Ty&PTJL?~ICNVEm0L(G6Ym&D)v;Qz&`v6?it&!l6Cy~JjY1(=L}3>H&t zP&yGkrlfqCY6fV*LoxG`7gN3x8e>@d9z$y;j>(QvmwVa}*P#J_PsW+&ShWUpehP}W zKiXDt6dP)aq*U>Z+2UoV^P;UWjGw=-KxNXEB@1AOIB0l!rA~2C%oX7;8sB)?_(t{m z8*mj9)4w~sJ@5-NJV9rw+WW4srJk9Pe`nrM>DKNcH#`l}7zHAe4!gy`Sh2Xh+_&%> z$3-HIjRS2rd`dchEmiLU$|MNwW+eS(YCmP@&ku`c+%$`HIBXf|J?9?9a)nv6jFVqs zbzMKK?!g52L zIbtM~j#bP15c=gpK(_WaXOm5U{D5Fb(r@jgQCXlXvB_Wjz?V9}<=?{0s?VFCO;jN3 zm(pqhg8r?*ytl&7d9wn{{dU`*r_&WWJs8ekR>vgW$0BMb-hIt4%;Mxxo{>t~3@KL7#%4gk1wa8xbMxb^!I002SD001VFjTI@8L?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3DF>QI+Cx3mgOS>1>wzOP6qo#TNG#STZ8vX zQ%|%54gE~vj758P7(DjRZZm(vOPwBYz0V97t-`wQc1o5k4>5Yy3?j5|*5`6AohValTsI7an&{JyN-OH7dzg+75Pl__yc4F6d`3Oi5GAkmGt!gQ$wG@tnw&xzV44 zCsUA2Z@wjab#;LGBe*rrV;yXo9g|LWq1zm5tfBgbY8$p8e~LcJ&WwME!PoetQkpM$ zt=3qqgBwB?tERY5eRks)cb5-`^+zNFzP5{e@(QAk#OUguZ8mTItNLXs&FUS=IohFf zaw$|r*L*m;_4HNtwv_N`9Sxx|+Uh)&Owk@v&`7vf~^?VBM3s*1B9~>4s&63@r}mJ6K3gTF?#W_{5l}6zOarWp)jy8XtYgUNbK$&`gzmx^d z4*DFCk)vIzUnxScDK_>}MDdIbb-tOA*ElB~y)m;jzfVRs(kETIt2encXJNdzpgCW| zw#N|-?`QxJs3X|EA%0o#GdB@pb*z~kGfLv)D>R`EOc2-bRBZ8_T$@9__}}jaMyU^y zuzg#ufl|$~Fyw!V@ys*%&7m-InmU>oxn}0DK=Yt?=V(<_;)aMM?#&;M?I}_;j^HHA zP_mqY_vibq&-T%qEchnPH0?BE0Te-*mCag*j`wi)3g;}X!gI;gg~prD8o=HNJ>-DH z9~GQO5i3^ZCYUX{v-_?wOOW!sQ>t3v0VSZqYhDRdlV^WxuXR?^SEr6koI7elxv;qu zU#EikFK&V^*j~cYgh~$@mT|>F`|Q@+)hq8btv>hnR-;QSbr34utLLYF!?RTpw-_U z2)h#%r+0r@@KFp&7C1b-6AmXVM8XEa?Qh&jH`4ViEtG}-qXbP6Mavbz0_fpEuqPP2 zQp0C2mT}_!)$2EmDPdU)7~bcG<`QC?Qko2E@hm{Ka;0@wW zR24E7tc)i&!C=#wG#VH5XQsIr(Q+RZnVQ=T=9YhmUIfN~iR&^6fJ#1~M?B1;RFgH0 z?O8+Da2jU!2N#6_|C8kJhEqBPiYtUdir54Rvm&pP3V=}`sK)5wJi}xkPwbQstTmL_ z(&F;d)9Z5-)x4(owlx8wY6oDGs@lr7Cf^SI(#uluwbv>izrYg;wd64?nrjgPvaOcN zs_=gteX?GrQ@o$l6htmJq^+Cd)EMWD53OFwMlx_tx6@^dFDT*=5IWh*mG56)hH?ce zLCkJE476OucX%4mVlLw*GFgSRmd}6=lqD?uV-MY5(7jOAnHlQnUasyp7irv(Xt}@d zhHQJaH5=UDFBtKEALK>fF$F*zuWem~pDBOuv>sH>!@WV_ta+_!Fi=i;y1;w75@zt1 z66vSsvXHsoqXnrMF*g}RlCE@QIBN@7k6Qr1!&4nRZvfqqY*Tui?B{%j#u;FNn!ET> zYk2)wNb?{4P|ETg!!Nb-5YrAmavI&X$qO3bOjc*q%AkPdliwh3>yP+ebg&t95ZZqV z?jF1mb%ELFs9utt^Lh!)UGc_b;6yIwotc`%fFUjq^3;Q4#Q7coriSd>=gqP-vf?^( zq1Ek%cxx#`as|#68?Dlv$W%Vcu14I;W!>?>43S!u#8Muj8Bx$6p3Dfl0v}S|odij< zLr?+JZ!HqzG5{JJRB$g3&7|>7a?pPvkv#5rehR?~COvtQ=IZBVxWCEv5?Lt+pkFG* z%9yhi>AJ9!eB?_|(or_u7kWk?XZ1V&Ay}U*h0WB1GW=d(rc%lbF~}$FGu~832FtS> z5Dp&`oIWaXX|QAwTcB6VdMWoZ?k|h&8`1PFELo`Kg0+Kc$4)Kx9-V#${}+FaQ#=02 zGbhn6%`Mfrs-Y+TC(md{X^FIkTmhV{T?tvQYPQuSmwmO#SJpU4LEA4BrzzksiC*@Y z-z#IK%z-W?F5(Z`)Aqo6#=p%P(T+||I^|?5gEmS*{zw-%Oe$e{FOpyJWtz9Izht^w z&{7ShI7~Eeydk(u2}}9O7v6ubYHZnig{CV|`XmASoTFYiaXpTG#llKjLBKCTWx!2G zyy_$hJ#uOYOQ_p08f8f(iSROndY^BH@AQgNq%=>^{vz_wF7bmtt~(x-1p*HYLb*H569<vbs{t%pwv=7$Ci`~5T(LPk&FVw`ucsg!yg8#atEw~diajWw%ss7Akz<4j zzRrdB(^vlg*XjNKzt4Y-adP+f{In}(>jieY0VP|8`160OTzwvEVR1lczbrrO(#p_) zAMVqaR|EvyQ$xb!P7IfyMSbuY7d%0WXPgPnzu8|L z=QQ8fLaqH|Ux$Cpt6jVd6dTH?J05qKsH)q8K+{)OWi9yWz1BmmTEW7RuiU)xIv^Gz zQ;G3V({{vtdggtNoPJD?FKOs3#I}NAa@A!dsf;SeDuPKi+$s&-XaZ)9Sd{Qys)eG@ z+z%-(W-*krMucDUb1%#}>=6O?QIfuZ&$;3YfE@UXxXyp{f#ZModqv9Rs4Oi0PS4ff z5Iy37)xA_(eLV(h;UZQbVouEjF_`f4t0mi^!{W$x{Zch~nP=0dwqP1hbGS)ueI}@f$>~FzAy0)Chd#5gn1TL)?Va}cBxMdZI2=pzH}uP z0?e|anmm$m5}Yt@lU9owEu4?&BW?Mg41gUlV^E5yDatyR!NvR|XX5DqAOXi~}bc zNdAZAV3s-v_DV_%QVxj%UvxZZnuCBSWjQEm!200^3h%|gS|0_3d)Pmvt4@wV2=?adRmayEW@p_rzGu%+%u;mY)it6i7|wP@>TKcf z;M=@o>nDqs9rD}VcDi!AGdTDSOqOf`N8~+Q`Y;8~Z`>}ldljx13mmHTZ4u9xc{5mE zG0QMAi2-+(F$uf%M_ToZs$;>~YV`d6OH6+%J?Wcn8OsJ3utfB5l=0AJ<+<;i*jQq8 zV>TTu#J8cE_He`l0mGWBo3ryLQNxOd!YN?8VvmA`MG{Aq&uZf4+x!AA3Ea8iT)_tS~Yxah3AI zbe)QtZQ)mO32msilK{!s=KtV7a%CpM;y5h1QrA`}EjN?bl@Q>y%zDO^n$tK@$r!*Ufh-Kdl~^B0nF!6A)L6|_?h!NZYY%1W}r zqbw@Ym%m)RU|ujTpj&wf6Y*SUaG`m|us1>NeGb-}-U?dKU*ePZ2cnxt+sn*HMJrN4 zjTe6XJ{W$MCz;}w;y*+)mlE7)D-R(Z3E-$2TPt$Et2Z$y9Lse5Xr zYj(anxJ(=aijh9X7zm?riSKY=pDKOXDtPu}0I^1FUwwLHyBtjm8>zX&AGqXAHX|KuFr7nONoLU)5-RHfb}wmw>`bS(@TmE;HE^TIk|2gs?6z zzJ&!W-xgYK$K}l1b~67WWXgZ&EQ4E;XtEP$DPQ=KKgBX9);6n|2l3;=VZ`ZZKFbXHD0@gbUG2PUBP3fsxk;2c; z|2VG4BGwH!{?ObR;MOUihmgnLma$;Uad*o!+kUE9<47#0az#);DtXy#^}`uVV+OhC z48wjHY$tG=LjmmGc|CvqqK-G32QW!jgp4_!9ZJZ1$Y7JxRsJysg0o>%#hISezy6`X z<%!*lLU`T?>OKB!#1cr!k;vg%Z%|5=rERA`4hAU5DTuVZQ0H1~3B-UL}$;^CalbVM9QK5*1R&a%OsG*ukz8 z_%y-jGVjdR^H@qUo?0*PtT2gVO(=+-8>-rZPRC(XHOT%V(UT%e2dlbi6bm3~@}=tG z?4lBTz-T}dwtcydHKTwe+s6(pE+f+_7lg`-wA7lLd7XcE>vXwD>^bxD&E)LoMM)Z83Rp+Q`{wMGjP%&tlejA{QY5 z$p+K22nvs87wV62E_H>ZH%(BDTDZNR{p2Hf`%quBLlYKXAda|3;#_HmpKs`(l!Dev zyX*s{{!V{=DyD&z;U5|9iC1U3c(3UOA5`vVa)66!HeLU+wumW$?C*F?v~7e-xpiFI z7*Lciy`Ds7Hw55cN(*M1`Xl1t7I45;58IGdACn)_k~D1od&LtbCad1A39M;90v%P5 zEwfxEjgJE9g{C}#>od)P5{dqf!~E=RLC$fe&E0<Jjk(EJ z%RO%rP83C!A3LgtMNPH*aO`Oh+xE%5u`6B&i1R(>OzZTEw!Cr^8uX|qf75}|zOk7k zp^dj95bp~)r8V=l0%7zIx~szgtDq2_rDqZLrwrmhYFc|&kwMs}DAfubI4|{No(b8ho5$e5>zG^&^G}NVfI_SfN(-OSaG~hGO%=LTz9EG z$u^Vwx{TB!kA-^1t!V%DaG5($O92-GKLbAi0ssyGxN~q+EzY?0`w{>ELCceT6-ov_ I6951J08saeivR!s diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.7.1-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.7.1-compact.zip index 9e6e0ba180d49b6f75d17960b9f7c1ad10ba853b..ef7f69d5f48723261380421a5080a197ff67f413 100644 GIT binary patch delta 5486 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 delta 4937 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 delta 4942 zcmV-U6S3^jE3GFRP)h>@KL7#%4gk1wa8y>&8qNO_002qL001VFkrgSCL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3D53ca*MKEt9R!M0K^=MkuIc7h&#pOB+^#6 z0Ma06(nu=sZ0B$d&V;BviRgckfsV)2X1>YbvR3v(*hHA&SL~$-ZlsVS@1!{%T^x#e zv!zSK_ym^UN8Ikf0>}>?_u6h*CP{xX5FSd!#Y(O; zUuq}zbE`YkDPTUPzu(PeT?B2gWt;F+fmwwhm|3elqDpN)t}XaE<!ZJW}0 z@Gn%F;o3{;QuQnZW3v5eV8%H)*08f$2W4`#;QU}&YA3nKf05AD8NIc`fNjtwHNMEW z9Z1{-GVSti`f_SlS%rVf5#!)p!1E>bxK9>MuG@jI@0Hz><;w5b?(>AaLPo4p0_3CK zFuM&gQsSFhTofN8Wbo9|>p-x*$ zIbv*7mV9IQiAyz$KDA)Y=CC8N&6i448|&H0HgKYeeeu`B@04x;+&SvH^0D6S>n}Mq zoqqZSq^&UO6S|$lQol$abs70s^*9*L{ry`WbE|m})@0>@za~$-#8^Rwctlel>;rp$ z{)8&h7$AqlZBBozSH4p)8HrqCg1^H1D$B||VaD0oQhPaNXU}YRv&;tUfWVN}IRP47 zQM&Cz5z}Z!{T#oi8qf0U!VbiVMZUC><{w$Tlv_*XV0_uhdu(wSS}A{y6nnBP;Q`8}aMJ3qYWoMP z2+IMQaCOF@%xb`F>-~C!wFD8(&!8qhf;fqqAA>#1UyicupeB=N5Wud-1EoQ>3F?b| zuPP2ByQb(Q&5!CQ-zF!cHJsGC4-qWD&(rUz?(rpn0wS!fJ$3kuP*!J}@HiJEyls+U zc*Sv^vnhXxX5e=<#<=Vh>D`#@VVPGmdJGSjcK9Wx)LLgqBQf{#`uCE&;>=Poqj&$k z!+)%m=Il~Ts>b+!a#xyF7Bt}u3;wnEj z+21q233VSiW}wRbKq5&b^Eg}1HQW)0DwGszUO@$Q`3Og*vqXGy6d(VqRr@2XH>3y# zlbnBxH)Y(*T>ZyR(+R4xx8286gUwpUrxF7F7CvAMEEEh31mP3iR?AUePUj&d?<^c` z|5GkRv^+rLP&B5RZABXXMFUFu$ApYIt?4?rG&%k2;FS9a(MA-;8LI8uL)4+s5}vD? zcHUhDa=+kM1TA%Tq`|DU(Ih0TYiA$v?qGi!);qAO?nXoW{OIKd_Ej6_#6_BWXzXlO zRptYH(JINGobIUVhpejzDw)SfgEmSM_Y>cr67yjuzxBQ@FH=6*8ti|n_nc-y$Y}t|Z)^s__4R+J z7%cA~y8Qb<9fYSjI(_4vz$I^plK^FjUYo;8w1fE&laM|=@1YDWD1T=S5PrYkMyqWJ z7*U!=8UHqka#BsnML)O^tWmFH6>f>G{HlaypAl9P3YQkVW;LJ>fUqoKD9%IX%Qiyy zp#?iAtwql$@v8@Xv#JhEK2g7yi4=eC`Jb5-@{eUuud^MkONLj)=h-s&!YMmed$ZV| z#3D(+Gq+>{$l*P58M|9R=7DD@G`|P{g$dk9jLfFI+v7eQVXk;EwT%+c#sDur`46`b zZd~|(SDjVi7%e(Oetr7rR)V8-n3%kY3*yXmNYZ)swpOck7XoY{anY{1x z{M{z;N!yK>!}{rnV}-klkQ}3}EEk{tYC@KC#;m{-^GM1o%E(_$xJ-t_aN5f2=}IEK zK=b!HYxpGM7)f3T57Uln3iCV28yldlji5vfoug@XYE`pihJ_w+%ddO>u=kKF2*)zw z2H~7F#6wX&p^6!2HBemAv9f=Lnobr6tgGE;M@jBH-TkZJD|fyu;3ynuXi3OA?@Wd; zyo|rqA*Ly>*F@2|0~=3DO9dw1K$D*MwXVOD5&GQHEUV+WY@&(6zKu$aN@hQ~>)Tx$ zOka2_Ww$;K=H8_=%(!G1W&1{GFOWb~)ay$tM4ZEdrEQjPv~~BH2R(m5VDw>Z_AXAq z@+3b)vd|oTsjDRQIX|b{W%)zo;QwIIyNCH8LlGDK>B|rbDlo^Fn8-+kI`o#&oYQya zBfnTVDkKnZ1{#NLxG^8S@Dk0+uNdd8MrPy=C-n{fuF2lqiq*}%(mwR#B-8ZTp-N4a z&@E2%R*{+v_xEzyp%;I3#?Hfwo~giy)bG&Kwl?=-kxUA8Sj4X(9a63ekS&7@v0+O? zyc#cuDLps1IKGn^o)a@zPpg5+WoO#VnX1h#aN8&p36&z#%o3ETif8FvF`7Mh!p z9ow>i^1-&Q*J6d59W}Nyup;cu#neFGppM4i&NyDnLFwPqBHqH$I|zNjUmBs&k5Dq920mC*BXKfZU#nTvJd zm1BS?PU{ZS#Cv}VCIe}HP>!&1RbyjS{yWxMq^wX6#8IEk!u9p_V?XpvB$9A&&%&NP zZ2z>#lPgYWhZUCUquEe|=DG?d(KmIRD|_Rg^MgVS7j?rr;8d`(pBYMo4dz_vW3Rg6 zm0mj$1_A>10gW5#*(y^pd9>IUo1@>Ni-8Dlq*O~B1gC!<6%vMAx=ysrKEsE&BBzKA zOhu4j_foj*_tT<_dvyO&8GVi~$nB7wV+gt%Vn{`B6cc;4`%J}Y5Q?dE)Umz+}_`1kJP8Q^2k z_1^%UA~1hu_Q@|7WF}3fu!_eji|0se1Biq-yP=5ocw?#ASGEH1_xBWYCUeCki_e>Z zeXQ%ip{?lJ`Bs_-b`=Ltso+S2`4pVp+>4$1pHAwrNK!*ig2f6Cr?V6MdGV0z(H|0; z6%h2muMuEKTQRoR*osWT~ z4QI&DTL$}nYp*>e2BVD{V+T_P9?v`}0dK;vG2?`tR{V;khIx&xOR}`@aKQedQ*)}s zSk#v2XQqy6g#2An_}F+^Iyqr1r=_1d7IM@4 z8g_pVFWbcD>wNuo6&O_D)OB*;3ViL2giHP#EmhvhjRS7$rHk?lVQF_DPK45yLP+hEGVdATY^&`9&CjRa#5QdH(0$KLGO6@%ja% zla+N4`AV^q%K9%~i?2z4;yaL8v|Ft}yG1J+CZe}MljPvwN!F&K+dgH|*Ixd`>Q;YE z*#2MIOp_F-slQnY(L5ODUOfxmYHCqGD0zB+A)Qky&L;F0bp?_K)+8bHanU;!nS z4m!VBNnHREg1zxq$O^Mtuih@tqEM;OfpN{*%GaW;H9Ievt6P;cv?s%(`L0lVYE9i? zEFqMSEtlcQ08#`+YAN(9D-k*RK{S6obK6_1`m_-B`Lut&rON~S$)MYGodeMt!7hSMu`Ee>V!U@qbFV##hI386f~4LAs&s1i&KR z@@P2*Ig;>|`NU_W>5C{R&2(w&Wi@5aXcosZ^Qso(+=LcaPk-_LkUSxxmz#eEzbUHB z=x&i{!2K_@|0QK$ycF?D?bP{?z+nRkQ%aEu(^0{ksx%H=xF{Ub{3s9ED>)o&QOToFr`6;}cP|ib8GTt|U5Jbr^vm$rT zZN6k^71TKVOv~{dNd#Eafuzb5)>0DRG>6C2RjMFB<3T8(0%SsgNS}X%&u=UI5if;I z$8zLi)2QWG(Qi}ca@U9GwHKbv$>FUr$#?~ClV?dTevu*Q;CS$fb@7U)#^AGKO0!f{ zuG4+88vxu?&0K~))zF(63KMha=Cc}$pWH29vE0YwUCYC_QxXq?U*@|J$och~^$M>7 zx3qGoqf4?wMZ2lcu#kTx84P*5aBTUv>T+PB$&CzJTs#s@{}K(w%Vt`r%eCN?m)QEy zYyc&wwqaoS6y+P?P(i3W2s!uNV@ZDvPmg$ z=@`AZF@-E%!&SEc%^b;GI1STIg|9h64`29H?#U{98`ByJd-C1u zP$w%vKVY^80n)q_1Aw)mk?kv6Vqwj?+ez8UciYx z;z985FTmpU4hE{8!X1HqOqYr#){wS5bDS0&@Gd~wi}~WFpcC-L*?p{#A^nl&T#!$M zG)pOVZac!lk-J9(FS9*C9>Df z?*H0|8B2cxWy{BWU~)5LKD6m5$FOY0)?oh{~?m+VG2Hk+Z2*S>{oxZSOsNUfEdQnkGsQONd{#-Mc~BH z^!za<`}0-#`j|26R8P~h^4iK`7=CVVy|(T-Zhaz%AL79tAlRQx|989naR(N{&+-1} z{yml^ByXzYLt28%Nh?`Xlx70?oUj(uhOR%|U$Sp1PH6h=*L$C`nOZMb3;sb|T9bLG zSnPi!BO*R%OP>?bVyv^j8G`M8UKQ<;NBfHUgZ{>HZYN9QHM{}VU4#dvudDB&MG@Jx zBoyg|rO2v6owZfIp#_jz05Ql3wOq@3`OFfl&ya(WkxzjKZF}|l<5Pq>wXR>DlSa@@ zC^zAym72!*X8iD@B9e>>NWe#(<_*JD`ec7U)5g>9Z3|_K*Eu*?z9XhcereN<87n(x z#T^u;lj>~hvnv0b)xIP;!CwJKoZG|0?$iP@XUgc8%4Z#i9&VLgUcCwoo6Ot$Lw-8= zBPsbut?JVTvLw)Y=N={@w!?ZH1cQJ`C2V!xL?{lBT)k5LOT6j`j$%d7jugDO$OC`M zih~G%ON;%ju4F|~1B)(dDsOP`7QM*~Hxydb^eYs|C3lukXlkJto|}>7thRZlQUFd3 z^B){zD74(fNh+v!kBFMsmfqETtd<%}R6;kFjbyu+CqNOQ1T&-_tsNTxP)h*@KL7#%4gg?(hgQ@;4CW*i006G-001VFZ4)VxL?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq}-z^0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0ywe<+`qz zqf|Mqq}tq@*d3_-fxcig7ixbPK$ExxEP|#QX$&eieW~_ROI+!y=drU2DC_Rst*DDx z>GAunW$5MwZ7M(Q{$SgaX2 z7@yMhfQP4w4hP^ZroV+aNC8(yIpUkM9JY4Q+0S!S^c0R%oC;%I(^r3}Pw#5t+;-;bY{xeSwekK>|z`dG-i5|l%Ba# zRYR|tDKoY^x*NmMws4Ypj&ZdVR*|7r4N{!QhcZxo)eJAp7GU%%H6XXb9s9duO`Z?g zu;&*J#>ZK7fsB6|l;`QH(_6l}NionIh?G+wc!w4>2H~JZ<%&uy zCQC@5zz$kMxgL3C{Twjn@i=QMofhAC^wq(?fxz5Z&CP%L=U08;=S~DSD=Fd zlMQm(wo+mX0O$2qlz&6TWWbnVn<A>$HPp15&x1uEEJlRz@pOV)$|G;f7^}?$D>$kj*r;*lZw{0LAZMbJ|2SM2 zc1o5+G=YCUR5T^>D4^`KJtN*U5KQ#sF~Z|_Xv_QVMunGe(`1H7`*<#&Tfpduk71(^ zkfx?+wKoFdW{_NU=~jgH{&dU?3mX@oB9$H5s1ZccD$EWoWiCneQulPVYEcTAZ*IFV z_fJ#b3@mLK*E&`Jbg?H<85vZRwWM8lbTS5W67GLM+R4HW=$)ki6U=U5#xPm%F;^q> zf|$c!6a_lFXQx4s2U+xbVHOyfv=XLw*=ujPuFHzXp`%-4@kk zjTyJQC(3Z0=tVA1L)ER?seQ}X81{l-B1}zlG0-S@4s?!!k{tgeDTK2O)uISNUDyJc zm-(Iq)dhFI^^?Bu=%LHoXgQ!tUIGVK4yS({uB#+;oI&%V64-K=t_?-z>D_*6vumIa zA%HiKey$7^oj_>j8>wAKAbRkyIXAaRTarh=37BF&&QtszVy#W`o}qgkWJSGel1_?Q zb3u-axBCs4>-28D-ujO*&m^f91rnLEL;*dy-%ACmt1L}pvF+eSY*i?&?5=MFn+|`S z4I5UA`lL<>Wb*voTjsOQBN^IM9)9oNH17?NcA3@11$Y_OB1C*4*GwmCf3hX990n96 zOD0QYCIbP6(YdgPG&X+A+0^Y=i)eYV~Q}MygN4N&CYNXotBc!_zAB zSI{YG%YZa1;7D6ThYUgT#Weu)+M$2hO#raGBnts_#wwj?eJFR;xd^W_xg9*njeS88 zi#v)@6gLws_bkOF`E>QD{Y;-qlC>S@(Y5#gyj3ytp=s>gAODd^I~ui@@iIRx)zGTbTu1gHW4kduS66D_IG2WB$xhxX%<4DNd! zJrX*t<#qIG>gq3`(OeVXB3Lq=|DT3!P}n)?_@kv@AGgKQk!6-`v^RrLdOxqtf!xL~ z_@(e7(jCY=LvI<0CY$l{FgJfe>FfkTNEWzJ2K%^!g;rg%!BKdz(sQH$w@`oh& zp~2pYKcavg*RKjn48@RO^@yr5+HIWElu{!)L|jO~?-cEpJ9+rznNY(kykkM<6lWGd z6c<_!8K+$K_YlI_{as{X4s$doJKey(OlecbPT?WyW63|ex7Nbc>9a>=lWfS08G`h| z;4y`vrji<@zP8TZ0cC&JXKH#tB`D|g;PuM$HI+${Dig45w{4JM`}@7zkY?!gG%@o5 z&slX+vDRRRr)kgVq=$~U&^eC2apQG$bjj$24l@#*-N&H;s84ZObi{cJrD4A8+~2J6 z>{0^2X3>KLyQ19O8NM766QQ~^~4+VMF)a?K^2rNwt{7^o>MO_N4rS?ME zWCpZva?;T$E)rla;~^@o^UGIDZG_kOE?Qe<-WuxhDw&K4S%>l|0@Q8yRw9kvd$OOt zf15BtI(=ByLyLc5P3on3aI(K)__R;YB7ZkEk=g2UXLc=Rr%EqtBgRp{uTZOWxHghj zqxh*i?+P2PhLvzL#zkR#l{Wfx5f3Y&P@fg#6ZH?Kp8{ch5be8anbx*gsTUh3;nUKQ zXpUnz-PC7h>Oaq1;UicrnK=z~P=pGCA3&?l%%SV43T%HWY3EPdz1uZ?Q7uLyUtyxU zgg8+1+;xH_^iVlo=o^Q9HZ;Q-DA#Mi_fQeWEqFZp)ZI{J#*Ip_TTUZ-Gwq!FU1cbP;vXx{~cO6lFm6n z4kgkx;&OjMK(pvI$PNwl^iM|3F362cbqEO85c}maCq({4M1}G-JOvVB?s2u$^!Ypd z(A|b61|DS!>Nwn)e}yEx=b&U~2v6=7p?GknMZ*a~;&tQF)&4BoX2(eJ@N-WEPYqx= z=Hw}mT3$|3z-fU?PRr@NU3BqEN*^3U@t{~gn9YA$>$knnWLahF%F?{%~;Hh7mC6yMtIC1oxdk{!$g)keg{PC+u<0keUbr!x@2peo8S9 za5BF{j4Oc!VbrV~7}DM&)dhDj!%XoL2<(mhV)p-IjbzP`<~3;Qg(nTl28+_mTTgTo zeVoy`hfF-Uf{1E-Lu;9@ZlKgUn*j(C5PoOG`PfL)r<-SZbUi~2s7)FU1#>*l8; z0K{70TpPW9(UTDaW_O?5o_6MWWmAkY1*WVjT^U6(rg*xZB8sSg6twQe_iD*+F_=H1 zVA%`Mf%%EC`5yCFzO=b9=tPAP)Xsi9sET6~nl29;U#rq61Dj=vWw_xc6san(3s`?9 z01l66qd@NDwDOB+X51itjcU^Y;uC!0^=}JXN!#;!C=>g%2hB>_4tvDgdRxa}L;efO-hvm!3va$7tPga| zTi{$P$yWe)agf(7RL0d@`a6Fsx}aG9obxj8%z=oPq-IL&s3ZGqX&3wfu$ek&r0L6KWtfZtj;?81Zc237X}k z6q<-UwG1oX(|lG-$5=Eq6Zb8lHmRPp21=50#vNz*`UB(FT*^pIzrq?E_&Y9~^nKRk z_fHj)s~CWp2Id7qqlAB29{{(x0WYtEZ(KD#wT1_F>W4B^HGVbAQp$0|tL!l`&O0sP zwR~7?`6Wc-+b~VYQTaxQTMiEj!H~lfbR~@U$i5UNM*DY-UAP-SUm?AD>G2#5wMMQeezDc*Ij=Fd-@(2L~H^ylBE%t zA$ioc7!l+&*ykn}Lg-}8*uPYdE|iZww8G)nM+S#evkA206rW{6`!+!7C_5hbka~qg z&xRWQbANLLolFU7?ex4Yn6rp_J5SJ-R5>kq66B%YKDk$2aka`)?v4I4Zv{`VW~Z=U zRYOzf%0H3!s)9%jPcL`AuAo7oW33CWe)3j{gZKT}{3K==z2f7^mvS zHL3-U0ApC+$nx*!NXL-&5-SLG4l!|B{0v(y^(*27p+J9XztsMhbO!`?GT8B2nbB5^ zJ+$(IZ`wD%=TGo_ZTcd)G5Q$wIWW4!V)JX4{DUxj1jSE#DPKh`jo@Q8r%-&irCj62N&zF3NkL=)i{rI@{p*|7LWNC4?bG0jkjfioyf8!o0Utf zXp*I(*{(xnrV`Em7(VI@3h~wdc3btO8FpeMGxQ-Gqfl7)k;CU8Qv;d#;A<()j0;La ze*?aRpCz6n(k(M325d&)3gT^}c6)1`F2`psC`x~fX_k(cQ^Aa-9%EQF_=PcHQuF!{ z*n>}%U8E;ho7m9$|1ZOIn6bGJC;wUg zIgIUPYDNQ3J!3UG`a5+6%5B2djC#VTc?BkQW|^eHF_va}EkGjA%wS4FEN->;o?EJIjFA~kfy0+eRLQ5|0OehEyXK~HYjb^4cM?g2W!yfCr zQ(T32{u0qI21lcc|DL|;S7vG#*4i-OvfZ52O+vQxq;R>%kXaMM#qZl7y-+weAF6}8 zv%-0tQAb(V`~C3eS`vO@2%RXKa=aL|{qTSM_u^qdclNR7wS)A@B3+-$ue4#{SZti*Bn&>B%+g~MQ`TKta zczqZy98}k)xh&iD-pWh|; zLqS}9le}6KzO!w?H#dVP54q_!%AtQ40OfKUvt;;u`<{K6z@5Ow-C`KJ4U{I5j{Fas^%3(~_GE=n=lhA6&i zi1DDUHUs?fup{%+mugng-}LMxJr@#YUOxVC0y9SG|5C}r>WwiZP;%0e({*gp2C10j zkl@)mR{v5Yq#h{MQSEbKX#9UZqvyfmGq-9XmBxDynFmix=56b>w}nE!>x{u$QZY7$Dtw5E9Aq@DZ}QH$wPk@KL7#%4gk1wa8yd*4X6GR002qLkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiHSIMO>&&Pbl6 z5Jj%2ViGm&z}A_6tM)WTuuz`sGX8LTXB>$BN|JY8*JNoiE{_aejt04Mqqx5qa?S$z zDUNL{LYIQDD8yX*bT`0_RKaS9#GP$Qbfkl08CAN9XaNCO5STBj;AN;d;zJ*0p^#?K z8J5GETkdB-v#6OgKy9=NqKSqoCdv*1@afU06T;2d;+GBooH=97lj6eYEXmJA(x zF04m`9+A@)mB_b%9)C9mznYY1dr|e%nY;J>+^zhXELfMtqtz${ zt}jCUkO5nAu$lX(9r!CaUjAp=`gN8$TukW%C;CF#UepWF&}sS^KuxYf*vqqiZ4=n@ zI3XO9>Ttk+?8pYSajVE1Em#v^1g~xCN^s(*#3o?jtO>!ii2x!3Ye`oVnsd zc@UkV53!EK5L6s)&O!OS$(`4gWDMO9Y?cUs+OF5ZwhMTj0QDPa9(zHn;(uO#?Qd&d z2uj9IX^nw@vU+PcD!`4^e883t*8-JzCio%v6{7Wj#Fv_>(IoV9z1OmHpmeLyuv?u4 zou$y&HX~@e5Vx*kqf>y8Iv+;o1WO&XP(=s|v+Uh}>?!#qC3+Tuy!tazFW-hoI0XA} zmtVO4=6l8IFHrHX_^n+g%LnMG|JA+snGl+Fok5d7qCBH>y<-vwgA9UoXR|@urs~xq z(!4i+0^sHU(nK~}NG;Rib|pgJgj<>$Iv%y8qcE@aVGO?t5)6&wybI<5q^O+IOw?Rg z66kVO&3CwT7KwB7Q0uU1**aEGZtrh#6%`jfn%A(nTb5}e?Wz`ESiC;Nk+mWIpSmwd zY-#T%0wOCMWWrZ7sG!sy^Ns(g!WQiho|NQ&zOo9iv|bs+pK^+Qxzw1V4(ry}>wO*# zkO|T^Lu#;NnS~3#=50!9BJeBJV9eGtREl5oq6B(_M25{@w^e_j zmYigh{LpP2IyQvFC)M1+I__>|2Fei0;%s@wjR!EkpoHx?cT2w+tb*t<#_pF$NVoNW zkef~_9$9g%Rhx}ptI$3jU_wDKWi{rjxJK3BxRLg0yR-s_(FdM$~65qJp z;~X+PGddGA1jcXK1AkvHft418(z=dh8}88xl_;u7;4WAP+i5H0X;HQh ziu_%)dBdZNJ&dJRP%QF#O%HOCXQ#aLmz*s_!Hd8`u!DY`+=PGvfq*7!rFHI3 zoIu-H!c3skdE!eY#pv{ZZ-%Q^GN~zf&;N@|Y30!9X6_4-yEMC&Kn_ybN_-E?OOsOu zTlEt;6>xMx6&(V{gTEz{x30_+n3+gVU|n=Ln$cfkg6GfJRlvt;wzD(;RYAqpe=mtc-3QSvjwg60at;dA}-~tTxg-@MO=>BdllmFFj#36Q~4A z7t+OjXH0_5=q8`biD@j4lMYJl2Y#1~O~$T+J220==?3giTijL}64DY@Od1xe$O0IH zlt6o#<^hnD6BoTm4>p%UMIv2IQMJTEAYlN@C#^GTZym^gykD^cOw+HKUeCq!u7j@^ zyMR^gSqxv~uqd%?R)o4U1CV zO0Xq31Hwpu?rKv!*o)vwe^HCCqe_|GQ7WqXNdyeSMkFZ64$%4m)t+IH76Kr6mDX4Q zZ0*d{VrVFJwD|YrTs7W?XjyQ)odNTPtMp)?HK_|O@#%BNy?Y^lvlal#rdOCIs@f&( z71x}+Ypotp4vlsrgu#;JLfH`fHD8BRB4~gb2NFSl??VdS{5oQ3tQrc|s{WJ$lJh}_xQJo?cbpKY~$YzE*f8V^qv?^a}ItEyP8A@x+SKS-IP5=vlSi7 zQHga|*QA^^RwmR2wvN^!(Y ziE?l43cv5%%?D=lqoE5n@yV^Gc|lu>%67GXT14bazreow>ol1`BIx z1>|y+R5O0?;=oj(YZYTWgkME0{6(RYee;huf5--fd^S){(LN~beA5CXsr4K=pkK*< zM(T0FRtmDaSSV=+6EGET+x@}s1adAYG^u++uB{&YBJ9*l#|`LvI2jIvyC=UJO+?TjB$m9EkSv1UBqlmZM7>R*EwtZuWr%tDB5_di7F9KbMb6;T0bdz7;ADD#M7(g0 zfo#6#sXCZVLldU@s|MoC5h*J|GICny~=pFVZA? z_f%)02G00#9uo=%_D>~MQ!102$E8(QY9+|3_{ndl6jx|yAyk;?ocCaX;Ae5I$KF;F zc}I%`@H~ss_W)dxrNX(KIOkx03q*d?P)rbM;#K+|9XVuq{p)s29OL_R-m+4kV42(+ z2TQRik8DYs32ieTmahG=exlS~0`ACy4Re~l#srte7~pHeft1Kn88N)JAdGgbD_uUwrYejUK{LgZpRYg-|iK zuvTzJ&V|z?`*|<%zO`i@qlHs-$1?l%Bs+|;VB+aqya=8>2XKzSwJ?CZo=qK&JqX(L z%VBRhPqRC-j+tKja-h8eM_sj>f1`|O(m4Z3O7wq)vd|ee&Ue&*ZoCY`#;1q&_F(Eu zI$k*qw0c6s*IXV@5|uKKLbqB5s}bYS;Ne3irgd?43I?Gn3H}cfSi`ykJQNz%M{il% zf5^67JZp36o-7qzk&=v%Y7u2B4+~h`$&?GvJbmmWlsqt*d0+t>PXr?_C;*fZg?nfc zSzv8zAYRSf=krg0?=3YsRE3y^gdac_gdmT-{y~w8_PDFsZ%5*wzloM9XK|MgeQIXr zTrn!r7uyvYG$;s>_y5$`lW75kajkjCTvLq5yJN1z#y(-V?9|Ix`vAQiL~P}on3~yE z*|?=V-XT3qM9f;wO)}Vl#)C&`r1{bYg!wdkc`<*bI*&bnSdu$8;bOh9vf0j%cd3iB zJ#%znVmfxon?IOyZ5mt|J#S+Gu91)-qUONJGS-*Du6vU2grbCM<=v3Ywx>X+uj&uJ z_2iSa#dXt8DDH1-S*_L>#jg$G0>uowzpoISn#D|6%IMnPi7|3_A}Vnm39l9fwFG__ z%^<=`u!#46F0YR#lzZ59OY?y-W#PW-Mrk6m*h&k_+>F-n!REF?;2E&9IW{cB7k+;@ z=ta*O;@vuJ)Y8tIOe#pA$}jCZfR+G_ffvG=77m5pGGiMP~l~djK);IMfkNoVLzEw87VioU@QSO>D?*eO0|>it6p$Nri_uDg z`g_=6Z93hukYxHJaQj)2P7spZcBUc=*ik*=h~ZOL%@&JOO<8K>+pA1dqm7bdET5pfk=lVCg^?5&hXPaQGes9N1SEfGfxUDI3P447O$21TjL#mfxc1WpnPEs# zNs+idiHk;Vfzmg_*Cz0+N3F6^q9Sc^gidQoJJ}FZzcra)wyAU|7P>aGILWF#zpMq=ffN zg8{QDjf9Pd+u!lyyQq13zpUPW)e*HPH|&oI#-xNSvsAu+UN*Agn_N8;m$65{%-_bn zoNgwijnx+g;6{(&b6maSz)coe(dCeOw5+x3%|%VcBpGl?d#VRM6f#sXdcA_aim8#%P^gQFUn5u&2Y@kGoOY zrVUvDs#)Vmn6Llt0xupKP)h*@KL7#%4gg_)hgJc4gK;Jm006G-kr+^aAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x= zGW+^zF!ROovZUOjDFO*}8cV?9_SD={3W~eZrRLSEkaCA?99luR)9rpXn4?rVt)$xA zo7f$w{eiw%RGbQ9UDH>8s8Dt>nFN7N`~E=m{7P%U z>Y%1mWpZu>Y2a2@%=d(w>{Uhv_b3TIqkPT8m%R7!q zne6XBq()EJ5!d?xRbehEy(&}5d1w{~Q|_3r&sy${sTR)KkJnBP4&%Rdv6|iM0QI?) zCD%_TrU1x)*1Od9D?@5~X}QIJbjkfA9ru7r`Ks$JVy6lhM2?ipu|ngbq|{4f;F12Y zV@g|NQoK@;#JJ!TqyI`C3)AC|(Ko7)Ks={MeE+#sf16#=LN&44u(MJJ>ZZfm@W>6v zhvU{AB~Wf!Ly!!$qqwU#Xab>icSu+RZ2FlS@qZbA&ia&4;>PI8`QxLds~Le*&@;z5 z%Rd^CcZ&Qyi?P&enfHoKIoC4)hu8}3k!rfqG?R9E#c9m~8Ng#}>L_}Cw}5?De;GZ} zE-ehMC+Y5Cz2-)VUQ>cJQpa+StJ0LHKklXN*}fo3L@ZiCGNT2LsGXdV?^u+2H*@B0 zYA4cv|9>I@7T}xPf64)zmv%>20$#OvJaH9uNRRW3Tos989bDe1S9X7wNP0jL4i-n8 z{Wq+J-srr<86*u?q!e320ZHMO=AO$n5-l`6U*4KpJ)CH_=EYeJOv^fv^nZv#tJ-<~I65vE2bd9aDvzJ^jTp~WmmYwH zzC>Iq2i-zHk2q$#)qx!{r`k6u8tM8rc`rD>R(bsP+oUxnwQ&5sv-F!hvS0gw7J2G_ z+()vkG%wnkv@;1q?CIWc;fKAtRDWT>b(+3;67k$JQwgqYd6?ABV$o7*^;~}kYVd1} zkt+O*IVy$Mo7jckp_AvzG!K)>+JRufWR|}VArkbExWVYG0<5iTQsy7ipEK(%H;kCL zuaE|O!Dq-F0NVaJPwRYR1EZ(HzyQw zs;ziDbkXPyi5F=jSJ{t2oWk9lj&8jGTR8eZEkWOR`#7%FEWbL6Gf!C@os43Cue?Ld zcOmcVQYzWWke#vki1gI(n`SuF{_K{8G}8C*&m9&KOfWGsi+=U4L+t=tjC43 z%i{FIJF>;{%KQ<>g5GkXgJ7nA)SRc}frzHObr0O&RKBYtuAUK_EwNN|WycD&rTau9 zZJiMHOG@CtQ(R?%J+sK;vdYW9)!sLP@HFP(cKc2zf>9Kr0_+dbLJuEH((l382ik;x z+$Fd7+Bx^oJso8TU@akCCJ^w4)I{`LE>lw}GhPk`$J#S%qDQHjlL(@J3UVD|XS4GC zf;ac99^ZC5xClN#<|7&k>(9HXTPbgk2IRgdI|v=G%1Van{Uz$_EKfG2$f>A|loyg5 zLPK>&Adjr|I+V}JRv1|WZ5vdr&6s`r0Yxbj(Ry2d!ObaBeNzXRQt4^K ztA_L4C~-FCNC~EwJ3c=QinB7Z^9fNsw4o7Ns;Dr{hG41}r)qUK5x`MXSsS#lP*nkr& zh?5Cqf~tI)%QsuTOxn;V6Z=drtQMgjtEuoCF4P4oybx`@)o4-*=4k{QYwJSB&G3*u zYK^bk<`^D8j04Ivi$m}J=;tM) z9cxX298%!q^AEXy-o!PByZh)!WBo?EYO$Y>&A0mDAPrRhsULytUY;__TXeN3oW8{1 zVgwRDh_jJ8WRT~~37tg3vwrL`nL(aR$>+tg^S3J!-Ft^LA4rW;$chX#f_{xv#P-+qhJYkMb0=D(TwabdUKmAx50YtBkVKj9a_0KVC@119 z3(4u@w`dXX_7~rK9mAmG+#7|8oXgJn7osCn&VSTA9jfYtsU;H|;eJF%y1^BlYasD* zP{V0xKX!Nx5&B7*%Wm(lHnglDyt+y9L*o_Wbkjo=;JpBeVGi)!^!G%BkU`*nU^agEaZa%BxlPNkXK{%-Ml`l-8veo*Uw297r0o3|LkxJ z9+l_(J=8^hp1?1p&5U2`|g?JL0xOc-$$q>2~I`xL7jW zs!sO-YIDc+oN3~lsATe)$oym1wxoK7Za;mWh6fEJhB-1+dZiFgty)E==D+}{~)Y&LkolqMV~x29~0 zW1!TP)xH0!hiBQ(=M=J^biK9`dFmf=Y5z%wadKPB3UpOJvy@|9jbrgcvM1Oqti{$c z(n|jrMJod3%Sg+mPywJ+#kFNZ%*FW=+cABAwARRk#>Sr;F1W<5dM~=t=|&e`h);pV zJm#moi0v{`#URin_9Cnou8JsB@`XUG1_yK7+>m@aEMEgMRQmK_$q1SHEkZJJT4b0uBpL?gJ z9xyKQN~u<@+fXE^&f*009B*-RC}GN>*kZTAx@dmH*Q^pUMm?QKtoE%|qvcK97TyL9 za7k+9TT`C2zZZtDL_^=+WQ|V&>D^c#_qpLxyisPvEqD0>^m8LH%5=MR$u&NpU*)ge zBvW494_^)|*8epVeZhWRCy^i!(BiLu>_3$y$^YzqXEp1E;M(qxN72!|vsIA7H9Bar zykSnNg1e6XOA$%offZy}BO#&` zk_B&DmWnX%Ec|l&@e5PZw(v=Vq^5Ga?y+&+B*d$mg%M}MwWa4~Ce&YlS>IBYk~)>z z?@l^(+!|!H8JuZ%10cGy_sG@Cqnk9uyZ+oPeR`g97VZqNpmrrdMVc(WffobF9)OB$ z;)3Q9W2wf*E;3SC8YHmG;!y!48II%C+dn$QmxLBlm|Ok&6$;Nm64wB-L~8g{I_VJs zTP*;$XxK)hl^qMLDy7GNZtZ?vI__S)bxn48sFOk)^XP`%W;#BuT=~8cBJKlzj5^W| z%>1v;#L?9VDQJ6RMbc++AKvL3_uonrkHN5ZqF89JQ<&$++1CP4=g)^K^wY2MjA{mG zhjq$7L&RZxt@7n4H{TMz+i!%n{P@&3+`B*^D1ZHs;x~az)9`G67z;^8_|vB?`FdV_ zGkHujjQ5IRsP##Isa6PpP(tG?on0d}KGg6Cyv}U8;Vg_#Inx|4ireWu?JCL;a~?)` z_8b~JRXxu)>5O*m-DON0Fne(+TU%)I5r{#hk@ByO^I}YTe&E1>ujDa58VPOx$EaM} zRw@{(wo(;-i4RAAu@n>2L23UtU|4y$t=wGmqzwAmny;#j0*uL91MVZQ-%r^b^%TvB+HkqA- zS>TI{xBRxxu+7Ht4?H^z}T{f3w*XA(C&%-@J`O&4EjCkJPt3MvvGd?@Y7ri3^98#d;!oeb zPr5lBnEwKQp=#J$Nw}%#qy4)@{K~~+ek~WS*prK-ByM)>sIV>J(QJCkC0!+egLrDf z)_rbj9p^nH#>YmnFl+vZWL7waN_%OBHjJ%MC>@M@(r;gK$Dv*5iE^|*RuQIn+53fW zz+`y98e{`#EUjdOcg$ep$u#Xm6;-=5$(m{{FP0^LW;wYsRyrsylL|r8wiUI75x$Xo zyiP@)eQPIX(vI*hleZ0u{YmUIrmQ4@gy##U1!h7zzelsU5F)Bjv%czq(fRb!azpWB z24s&UzC5m&G_}pa0D(e{u(5WY4$r%oNT9Jq5IRb6;K53>%{*y9PBK*4oo3HVirDE&C>+A1-toY->CG*iAaP)n7Za88^Ka90`(`x!+ zM4V1PLQB1LG?59{tsYpUYuhW%LsEq7(9>4^j6>RRRK@d)vd9#|g`f%oU#`>It5z8^ zsaSlqAren@eG^i`Gs&IhM0ZYhZI)|J^C+Z~E^+?407FyvuL}5tpWXT5MFGlgVxH`O zHxN7j?XM{1p{e|_X&HtsoXhWOhD4}0?9yV9hS`p^nRAqLe$U6wL6F4M2@LYw=8y1b zf{j-Hs9E2+_gmUe$})=kk^0g5BB`k*xv}Gapd=-_N?^YjS_rG(DqE}vlX*8YfD#;a zGA(w9t7$W8?-_&XG+Q~TPqFtqf5<(5F9(7;rb3Kg$zZ&#Q$LNq4kdef8{6qwu*M)A zt6Utc(xK?1or%W5R!vwH4Y6RI?kqFtiq^Ya5@Yk|BG!l&0cm%3~%FCCQ za(1uP!tzep6?FsCz2}G3DUU<{3{%FtCsK(LSB#{bK-aR##@GKSXVK+uOGC5ml=!WXBCWxer~u)qNGwJo=Bp9#BQF$rm_Q| zdGFOh_w-c6-Y3v^3}eAC-qcVApl$#c=huTMYnY4Dl?`lT?P&M>e>bAQBjJ^;DGC!@ zX(8CStjjT{ztd#KN~jJbRKWzFx;ut-gO!jnaa54L1`cj8pAy>nJ_TF@-;k{f8&>1B ze`z#n%i+#nuuFHjXTbk|0&uxjS*&CvnHeS7f2DV~ zE>DukbQnsKzPNtyuS2q&df-Cg*lY7kjuGDEM%2p27&{UKW{ghWfN^sMhlo>js+|qb zG>fJz|5vD2PmiG#-g#Q(GlsWE&Nvk!#)239VNH=92qKY$*XeRkJ1 zOwxkBbY%t1b22X-SJezmS^l+aESSb)+~i&$7Gkdv~427$*t8Nc4N!mGv{(N zgT2P}Mv8f8nB1znr_b*z!U#zlK=T}N-GZjC!1gKlS>Myr@Ei{Iw3ox<)`b_6;*~lF z+eh@-e?3_HZ>4j8IYP~6u=txs*+&{yQYu9Ez6cwbzAsM#3M4nO?Q6Ks83^mxe@fc(U=HO-@iN%Tgj4Q zlfdcNW&}SdEc~SRWSg}AR@@7pviVOTo}z|&VQqW~DV-ZlZK#YRs4;f=-F|?>=_b=o z$gu#b;$2xaOYPp)gGBZD+B84Ck~8j@5EEyr?xF$OP=fozQxyfpEe)Z{@S)&yi89WS zPK)FS8r(rfq~Qb7VvLgbwAmQ|Ogh5Po3WGHQ@`G*g+jD;<;~5qMR{q^w6F93D@1|- oP)h*@KL7#%4gk1wa8#+-oYMOe002qLkr+^aC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6>!$y-3a)VEueiHSIMO>&&Pbl6 z5Jj%2ViGm&z}A_6tM)WTuuz`sGX8LTXB>$BL9bnP%HbrIE_n5!y_JAh?nM04m`9+A@)mB_b%9)C9mznYY1dr|e%nY;J>+jXH*6=843d#W_L zbx20AMRi{?*|=n^M<=fCI!i2bJsx#mn(I4^pmJHoYc1wYr@e zW@o$CuQC>Yt-r*4UsBXSmtrewFd z+^-N9T`W$akA|VTqT}5-ujvZY6%bDy|34r=mNIFBG`#9ag_A9V z;}0dVuUGYI`ottdTfB#>0E#}_jp=mWXK_yeWrqrXmm9RPMhv#VmW#2hvFwt{h~qOJ zzOXG8DNf%)cpeoNUsOiBnoCNt)5cY@hLiFhws0OIbG#!}i!aFYOzokZ5FICX=GVM% z0%{`&D!Vsch~^iwuQ3=S`4pdJeZgnkJpf~Gy{&QF?xB>)GPiDpMHanag;PKr0@D&X zGk@rR(Nffm8R0X|{q31{JGt?nUaKuoVqAq7_q=MIRM>rwHP}2Uhl=0haJ0!mkbW?k z+?AK%d5@d{?^G|wRX%cMg2DI@OQ|`0@D2Xw* zWKx(SCZT-;F4c#!l;xg&9%aPdh4BP0?d(H;&li1}zwi>KCh_1vXlcqlgBbDQtv7Sq z`O&bsP5(K0p)j5N;?^U z1QN9Q+uvjG@X&6(8BBC`?+929pu*=?hnC6Ry2hE%vky(m9j(7xddB^0-<<0i!W(vo zv)$qwIyEU5#@<)+0enRWTFDGY@eAq7s?0rE##^)xG-a}gyW+tFT&w*8;Q0^EPWnfE zFXVAgbVkpbW!13f^Ci8rJ!*E^4S6JgnnxTl3OKZ-mw-NINpL_~Qano0=tOUUUcg@H za-GxRpb%6_@J8740|%+^@B5e|jJU)?7Rsvi<0>Xp#Us4A>O+o-*f_p|71)C4boz^` z{3|5NuICf05NQ&QF3+fc@k?F* zC6%~Q8$(W&;;ezk-ig#CoI^^%6u0g`;7oYx#c;FY86vOqZ;nayx;0sv$*});W~AI} z@TjNkKW{Qgt!X0>5jXKG*%ZyIvuR^9^HRsLB~Cdj9Z__7+|=640W+Nd}r+j zwlSJRL<54U<_(o1LIY9=nh4ov&8GNOD=hS<%E9V z;OMzOz#tIjJSe0|LOj3&aZ8yfs&isQJ7O#dBxW@sS@zNe?vB+2%4DYxNoz9hA$mh> z*32v$KYTTLtwzb8m5Ew^ecD`pvkgBT;C&5|4J(POkrbPam1hC2N;GcY)rCNYCs&Qk z8e`EihA^hzXZN$fqx;~^zebVnBlmvjSIkyb6=%|f2s2M#Fp2VpCfg5ZZZgDv-F(t` zJXAwPq6X5PJhLAuhLgoJdo)c04*5H2o^YFL;sZZc(mxYqlogg!j(d=QY0oqq`{JS^ss5UIu1EfR zU>>MtaLlZ0Jv}3Aposj3iz7~Eq_8Xh8tLq|{fK?Ypf{}I3xpEUC}xa4E&HQ05I(^F zzxRGkkeNUrxvo8BJOB`tysN-{Sk*YD`r~!Dk66 zy~^cvtI6dPaMsbo_%mn zQ{$Jy{v(t41akFAe^2hP0us377p*EbuhDxt4n92{8l;D!hBCf;?AGRcAePmj$xb+k z1KiRAKorvFDU!irpPFaSpnw5m;Hv7*9dJ-~+H^&KHNRv)Kp29s|^2!z!fYRnOb+%6ZNSV`fT3XdlPD2sVrb zUeGFkcf_9=Wx4Fejnby5q}kaOUqLF5ORR~-H%H}}5Hq@IraO|Mh`xFq5*JuA4 zb(q-;K!>36dX~{x=P#?H{&eMIvG+K%zG1)PDVv>onVdc53d2bZ;xfD3jV_fPjBB?P z&Y~_ZW$1dp5nL_am;&5jB(_2!+sJkA-v3_o@6=~oxAU|}9yhI25Y$MEbR}a?>-OG% z%8|pYycYR_pk;}xNNd#S4I;eAS(2}>kbgS&n|$5dQ^>3ZRu3(xgMd?9e%#5ufG{o# zuIg}MY@%3w0UvsnCAL%Y6FuN9x$7gK8OP_fo*1&8?vhA+)B?n`F{L;L34qwW$Fm=! z@*>H^v9XZ0Sa^o09^M*-%n8G%yuvbn8PTp=*|a+Dpp3mwRBj3Q;3kHPK#O9#En7}0 zPs10}mzj21^a0nkHR&mQ^v@pF&F{Boo$;lTlA2H5D>SI^rdgVg^KI#0vhH6}lWZ*M zgC;}^uDoFp*KTtuZ6!ZP^(&RiK4Rgqte%G8J~gl*R7YW&w<0lY5Qf8du>Q?|SS?Cc z%DIy}5aXc_i>aW{IcLc*pZHHtXX_p90zIKa)dEDSaGfiHsslF#X-whrS|kEqXiA*V z9@}h1&fq17z09TxmKMhNa+Wde7l@JmCFI95a`EKksMps`PTxw$=)E37pKl+fLVA&H zTAy>`$-WeU!T%)6;RfQW8s+1E0R*w54Kk?aJ?z@?4q%g>xuor9_~D*+3oqU9QR-5qMW0r`x1Br_d*?1XVLv5LS4 z0no66OZ>Znf4qD=W_8W}p23^n)w13z>;kEKlU+`OaDtDBl~B{c-*fMOI663@j`6nv z>r`d#c6!=}=9SQ~H@yg#2_&3q{WFKnjlX@s<^In zXK_GL3}P0{4Mad21(LDHNcGKGzm}3!lZVi#@15Ap&%9Kb+inT<6k=Lj&gTqL9btja z@m0l~eJbjE9_|hP2iP5dFm@ugXczc)6&MD?QPJug{iN)OCoLamv!kOw?Q+UjRB->= zn54~QD*_I{_FR{nb=t2sSZ#?!rtL}x0VzXG7X>6qZOK`|(n0>ox9rUSi%b(SVP;wL z0U`l(cH`;Z7wu>)M1E$tNU>h&gqHzc%w<^qe7GpRCoac-l{Z!VFx>i&YX;@b zcsFYF#mhp0n$a&8DLE^n$dU3o2>a0%;QYw)RR=Gc-O5nYCj7Q?yT?!82O5EjteC#* zF~%7i4IbN4o$;DGg@C{ZGpVDGM254MqP7dg)9NQ-C~6Nud1KsBjYMCa1U8|*ySkw- zC1Q6;A3xD=v-{tFZkiLMukDTV&w2$~RDINZ6iVJ3KY+-C6_|M08>u%dx}r469G$vO z$=fjZZX?>`BJgzUb)Pao&`CyI;>NE!IfZ26GFU(Hah+QuWDs6?Z5P{j|9AJp#2Sqx zH5a~q=_~>n;*3!sev%3Ee@bQ!FwzX^Kh-6(cu&0O2~9$OPPrf(M-(>8vIi{;)_Df7 z^-5`lF^jmPPZ8PL)x_BgL?1v|)B-S|A9?Gi>TK{dhpf1OWvcU(1a9_$PH`FQehOdi zKVC`WdSg8w<28a{bhY}5ZTNfL6uMw6uNv^3sMHNzdSP*u;_1a!#JHZiR+pW`E^+64 zZ>JpFRlbIQEry9jO^(K+$D?bURC6DMhzLr86!JuQEaVIe>wi=9AGmn7k%HsXK{W2MBE6Z%A>!;ZLDOU@JlAq|+=;N2Nw_nLI$73>5J#hesYKEy$m-dszrg4#^w! zdRHVH6`)-%jsT3;C{n`C4;1^=P2*r{)G~>GiK>BM4%Idr({muSn~SNT8#vAO^b;kp z)#R_!%9M;fPrJeCfoamfLt~(bgdSXz6Q-HJ;>1K}Hi^FGbEO*Vuyg`IQ$Wik&$+a$ z2nIVUV*Fj0ew0hf1zH3Yc8(5frK)Vh9TFtZ)wM{1>{w>Q;8Kpj1?0+5QL^B4?A5Lj$`aQ4Pwj!f-k z{bImBFS-EBM%UBW9CENz2rA8BZOK%I5e682OrAvubCkuNuq$2w zV|zX;OOut4Bb_h~eB3n<1Xw*dSQnvxlDquqQ;=1&HOB-4JIcEt#)xGW6pEGd<-pTE zi;i|VTvLU}fkr;X>eq`p<^r(Nh~A!g zW}AMD+xS^pPL1UT!!F5DS4;TV9ApEm!PZ^NGNqJHVD_R#-Vf{}-4wMYPN|`PKGeqKjR&e}4!Cm9z@68xsKH)Nm=u$rVs@3ovSQb^Q_49LIp%?)B`Us+n_GdI676vT6v`Ba#`rR+|BUc&Y_W%i=9cZamd}<6 z&AD6mbn8XL1*lfvt8tKYVV=V!$Ftlf=G$pI(A za^`0}xN8>8ZFqx*jG>;bvEY2oSgH^?8{4Ax_ClbJUfFXjtNwgO4M$pk-C?i1F9xB8 zovzY-{hqx^C(p+zzh{!^oHq91`+vP(Rr;ClL`3o-Ek_X~ko+2;(rcsJBXupup|Ik9 zW=Q3~zzdibWxAB376ObC^+Oew9GomtHK18pHlel{V*nk~bB+#ZTZQ8dZ`~6;f~-?T z8QnzSSF+##^XhALP)h+90zU&k00ICG0Jw8-RH@jU()$ts07=V}gcV8#KNA1|007I* Bf)oG% diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.7.6-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.7.6-compact.zip index 2ecda6bf7c80aa45ba65c93878eb0a0377cac2cd..8de85d76d4c05e5c8aa962cc2c3c639eb7c2f30b 100644 GIT binary patch delta 5497 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 delta 5906 zcmV+t7wzc1H0mxJP)h>@KL7#%4gk1wa8&%h0{pxd002kT001VF{uwEeL?nMFuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2qjVTRM4|afIbUkEh3DfdhE#1uxFjN?ve3q(yjs3Fylo}w)z3RAK zP=8@VwZ-~2^=JkR^#Nu8{O^C;kAV_{oO9 z-7b4Bx960Y@(uioR)w?Mu!2^JKD3(38`JI1&QEc>RA)C!|D!Gyfc&0DM!=7Hi*3f{ z2lGI8{skWcuK(}|kJQ!InL{;RF$WS&WMj^^n}1~FLj?W5(HHRUTUCHGYf%LRe+MKH z^7NL)ARS_5>|CjoecFG79u>9YH3Qt$q~PruvgIZ%byWr}Z=mfV#om{b8~n(m1{iu0 z^{kmlC@n@^rL*F|&7rCaN7%B@5nJfV$N=klz#9<2_wf^$d)v=*g3>(0Ye z^$^IGL-J*iTU{D>JVnC5<%!@kfld7I)FV0{YAOWpc7^gYNOGC>-$I}xWr-#f87F^U z3j4zeX%wgy+qy^ECxO0`DaB?!)AToI#GRROPgbrd`XPVfkFj^AQtT|A(`~w@9Tu3) zAL%oQ^b9$~MLAW|>mnGnQ1AN#iA;CN-$)c?-Ke=7mFdlaejG@@l@`=KHO}60KdU}x zX6Yb5W1h9Rd5ervuz0e|+O0bp3qFGfk|kBBNO+4o&lF_ynxr2@CzzKyxpB#~nR$;u za5jBz%DsODPollz8ha-#&={N%L)qZVG7uW>>zSN#!T$oVQKbpE@*d~%lgIe|>Pe1^ z8@wn;qBkTQ$O@JUf)MQ4G7k3VfIu@o`^NXRDfQ4*7^$r(8dvClQ1|sFSAvrDq)I0? z!v_0=J#~J9W{`8{ZaID+s{;;noqc~aVFzq@+%$h@k2F1>rN)#y*xINrs#K}v3f3KE3?X=;F+ZBmn4ZK(Im zqk<1;pIh@+-g_!Lj1rEA`Dsqc5C#lwCubeRW`c#N2YduJV?e1CtHBB8REMDKNVraF z!SsKh{sf$A)!4kBaWZQ$hwFTU?=e%Ca7sRf&K*XFXdk9_5OQBKC11cCs-AqkG^Z~v zw0hA;>ttE?CD60#kFYM{+q9HgECe+lGF+@;@mx;@)A#>p4B!&Opj;%#+dO}5Uy7X; zccxZpAFXbFjpA)z4ePkzfsrLe05VYTC#`?vVHJg5UK7_>A-~WHV+KAmgkvV1MsAfQ zi~3f^64Ze;$&&QPP9~8C&JLCwE5z!7x&nZ5&wvPsCP0k@vF8&^%y)8fP>WgeAa(x zbtFP+)Vn7+C5o{(_ydA{qh_N@#kgi)EfXpbEaWIS;}AeDd1+)mnwe8``g_>;B76Yr z^7eVuC=Ros(eNFgHe^pp0c9_q5kSYwP)Lj~t?HTO98cv6*0!cbXNH?*&$bdB#0PB= zlGm?(LTVQ9@+Hqd!GU6NjYu)4sY!pygTPJVNzvKsFknqp{VlB0O2TXn&sWyayNUZv zl*HO|fD)B@8()|-&i-el_{=Fu<9Ieo6Jt?P=lPSlzo|nV;k%v)wNrG^U{{QSE>`c4 zaXN7=twcBxIJ>9QNDxzrIvKY$g4Ii^z}iap>ukB*ZG33bGYj*aPKCEcv-f|1h0AHU zVJsrBxIuvkpu`ZSsyzgWxAOBLTYSPmwSKaI7MA{7V?0H%J;{FTQgd?eOkd28*X(nw55Pp)}J~X zF~A)#1xOH_ddA^*;H zEP;9}pk*`R@Z3ta+^n_5GKJOQx=?|2FVZT|v43 z?RJpJJMx~18>y_{cxA{~b1FXFDcRFSVIk~xTqz8&gSWq9i>TvbD+y7A904-y4BK|u zq?0DHh|$T*QrRkqzAk@o!EyEtr)GJO{%9kL0^#xlEeVU~D(Hu=SqKkOOnt-$ zKrKiw6rV%M8SD^2Ipc{5ULZKKG(PH0%aah#CSFl3Q&tsT2$kag;(R2kILv0-0^dc1 zjRG_7T0yzH4%(9A*Mo*CT))|B0 zMIbQzWrupa)uAnL7MDw?W|ii{U&n-LNpBG&^9kuI@E*Z9yIq+jp%(M(N)UjkqfTRW zQ_m?sHPo`8VfcRoFZQA>SFN63-IqZw36~ZB^nyXGUkE9ofL0w_$9B!sDpPZyBC5o(|JAX9rQQRva zzRXYwK4C&*F<#XKGg5|3U`a76=L$UPrS)A`au<|JiBZ8z2?#17c{V6^st37(ZBnHR%q1?PO4orc5h#!P?XOG9ZJ-)H#SB{SW8 z=aHy~WY9euz9qMQf4tH5(n*X5N!eO`g0PC}a`b<0se^5+MLZ%%$D<4tk|LTfGTNx%oCEdL{@nq#a$n6Ag4@J)Pyk&lRC;mt?Tp}*`=TN z%F){u;--iLXHI=V0+b#Kec>A38(TtaqgNY%+s9+nmae_Rr^_h}84)WP%R%Yp!1vLk zg?4`+{NDPxf(0m3A&6}?ts8&#cK(cz4VkIg1?X*D_%^)&ebHy$mZB`NrXBg+;Uc9T zzcpLlE7pjL5^a5gvCowt!EuLssO(g4etUsN9$iPUz1N}NA)vssoVW(syr~(vA%hP- zd8Z!3$CuDj#5=$`j3rQy5Vgs{e1sN`UGIMqMHnqGp7>tiC<1g!;d*K~1;(2fjY=@D z(epYGGCil;)iwhg<4wZO-$}4B*(qJ--({;;?+Hn%Mzm+=>ZO(to%IlOL>Ej_&4d2{ zd@sE2oZ+BG&Nt!%v_StKMd?XYFDbr1JUtaFz%T7`n?{eVCci4jAi#dax=W_{A8>zR z(5)2L{MW!QBFjkEJ+e4BC28It@%B2|sE}xiypDU9EuN|A6TmQ=&ujW=>1f zD5`BxWJ)}Cv>ic1<(trs4mF(!W!rxiH=lhAB#W8ZS?I4u>>(62PGf>1rg&UkcP0Bc zO3lfT71To1{eBOP@_;y~gpSwQDZ*)ioQm3vdMK~41&uLzzSQ-=C+1XO0j+eGs)8kE zlsw=z#3IP?39y2J{9A*~f^6Y_?cO|G4fQ2L06wUl>9^oPCq7OM`Foz!LF#{sePq)n zQe>DN84$lbl});YyT*vNWiN-GgQJD3*3t!xWV!FjQCZ$zS34bDOH4}N&TG4;s{tjPAn+0yvlntvcqz1KuB;7GmJpSC4W{Zem{*Ix3 zvrnYeng_b3S}Cyy*rVOs_%cXaTx*%Ja%x8l)B;yjzj--Fmk@k)8DQ^w^FF z0^R{$u@UcC@yc5p%U9a3r0;+eVq#juMK$X?Xr?c(xC{t)j|N1y3*~>&`5iV|xDSEU zW5vbK^IMv!@JTu0JgKrQIun}WqGau;CQyO-Hw>L6RjpK+4lL05Ep^EV(Wv58+5~I6 zmGGVxQp``C^%re{;f@)Bys`Q&QGAxRXRTVoH;I1H(EZ1 zwe6b)EJF|C#>~@G1H^xOGg%o7j;2PmP0DfzhTs&j}o z8K?35DNzB>lDg9CsIo0J7KfMgHrq)wPo#aCIoL9GUDV~4EfIegxZaimMUpHdNI*WL z)~0)0p>J@KC{Kh6AZ#bXl|S)G2sITV%=zB%{8<9urP>(-oT=r&vfE1U-f z=e5gE(=;jb%%KZ3OtF_-SiAxzBl!43|AR8}MmYoWOF^J*@-E)NOl~{JfSc+1ZxV>h zxexEE?8WrS36PTaS_*6uZoK9b`WwJO!BnCl=T{wk`Kf%&gjf^ z9Du|ussXnbb4JVcuUJAS4kMW{uPRY z$BGZsBi*oAGf)(K;7Ur$nLX01!mhQi0D3${|2%dEOA0kKMnj2w7I>ZMuH+(g)}eM> z^EQ8R_j6K({ip9*7-|c04d1h}o$KD`oNc4hq~=R{E6O6`iR%Hk%1WbPk+ftYmG9ia ziR9JO#2^0X`h~vKVaaMsHh#i~2}6!!Lnx<*l(VtO)@Y?F{FA3HX@n?x57mI7ekSs--Zcl%@&OhLN+a+8=Dy83D zjvC`j2lu)aqR6N@Z|e_)C6?ym+x)YmbpDk~sR`O@8lLf)D13C&=VZ^?Up2kor-n!Y zFj{G(%J>_edI5skxLC*YdOL$EQ5`W2iiEdw+=p6|Of8s~a0UZUru$LLhfunaXT*PX z4Z9I4xBAtYItb)86go;}eMRh-N6Rk>+Z2Lq&)joS>mgTmF{@UOfCPe@kbOQX6sE<%2gxl94^W zxSQbb@`M^WZY$rS$(QD_#}Hw1Ppp3+S8GJ%t?VWI8T9{3apDp6kiMv~s7pvP2&H3q z7W>T;(v?PeJ6j^$UhA9^`dKS-=R%JGdX>cNnzzGNIddlHhjMq>DG{ z%ZgCU@|JaxoRlGkB93di2SUji*fDa~sGxHw2dXfG-+&-AtRBR{8S8R-jGljhz1>KH zS-w~$1Mki9z8T?VMiiUK=c0YAj;?jUgsL4Tf0Q0n%0Li&WT@?{I-ZXTw1r_jC5Vg| zH#J8&V9u_Y`kX*lV2O?gQN>`sM+QY_#-|Q`awJ_y_ zg+djI83CDl4`Steu5x~+DJ*{r$PMUSX(woS{R@>n{U|(*5_Rv_9U~;@=rN4~&|w`L zEe4$amZmPwop-*2m5bkeyVDIPNW!jeWEz%x;mvA{oX$cwvw0j|7VG9lfn7}IC6A64`zg}UO;_NJ6+v=na+b1hd}cPX)NDh(i|gi? z04D=jVMNf1x_GYP^Yaj8r{+nI5_!F|9&G}gt^RJi33rViJNo+>`JmoZi^_qJ_~U-#xDpZ=^JKeW{o!aB#k#`2`?% za^)s&xid92O&J60`^PVg(I0m=UotI@Z$(o#LLLll1OU%*mOF^*^6*b8-BcuuF&&~A zyEtk&Um-f*neEGyhp$jl-W5jt34d(K#7&tn5O;*!Ah^-pMP7d+4Jtjed4z0|O8P%j zHAM7mxSE%`a_|(7mhFzI<&{>NicdS)xT%nf*;$fcMr)0>K!ndy;}7QrpX@bdUas~I z?Z>HizT`vYUk(DG_}#59A*;>AFIvrwW`?N{uI%2SQok+U`@;`9<2$QSN3aXM@)59r z^8u`*{PV8=Z7P3l7K$y!mjkQH^lg?dYky)bzq%maPy@(~q921#t+H)Fp*q|NdTc41 z?%I1>xQ*hG|H!So3kk1Iu*7$H@)f7;J;|BRf^MbfgB=;gy>@N z73Z>I_HP^vv&bG}O7U#wCn2WBJ@lctTR!h7dN>_`BYc`^Nyb^ oP)h*L>P)h>@KL7#%4gh6;hgK5b2ss=Y001%m001VF{TC^bL?nM7*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711Ly`}%1x^TqPAq}-z^0ts{)OTgmx)Z9}Fio4RK=GCi^a))djT0y`_C9F=- zt;)!rU8%{#=b7||{#qu?FeHB`8F`gjmacc(vlH~vYsNgbpFH`yU1E8s=t3K=&56h- zPn`D7KwZ3h?#2Zf@1vG$girD`oF-*w)xH+Hma8xshGrqo;*kUPZ*4{tb~?dhzWGoR zo@-UK$-U1v(c6D{%=d=ak^}Q`;;s3{)ANBy*fsuD^ba2nI+!{scyoWWb#3wjZ}f!p z^N{J%cdFwaJQ#S~zWdz@&u;hAgB5sx#_Kk0@N0^hIU|2GHu20@(e-W8_MA6mwl;;@;P1#8#9$kh_0<;89a&v?cnBc(!@f zmUbfcv@pG^GjB!HgN;vg_VHwzX+;GS>vW&s`H0#zH6fELG2c+6aEoxVL$Jc*_luQ7 z2wy8z&>IpE3XT#K)Q|(Pz_NzG+W2Wm#_QzEWg{O)&7rn-u#hz*lwV)7HJ81qe|z*M zjq%L`IpkY_U50;vX_!ZKQ0Auq0Oc8Ee+E5Ty+V3vzD6w037DZD*Ws`h`R@r6NW%{7 zk3k-3VM<}{w(0XDfVHHd<0N4duzPuubBQt0mlYDDVBfEe=;mtV z9$BepW%L;h5n>Fx9Y#TatxEmKkMo%{+aZZB9N9q`1*(4uzNfbC@h#ZpHo3eOayC=) zx{g2JTHHG_n0w;0D>18oOV|{N0VSbbslQfSVV^FWyS#tP7Ya4#f`vkLjpyA-g0;k0 zeO4#%-M-BFZE)+4DpWYW63_zbX6)}17ZH!f-GPHqlEN(%-m z|DP9sf1J0;qmJ3d)~7QyqBV&x{C{}^#FL>}K^B|}n30C?$d zW@B);Ek0L06j34GEdRfOVGp%qji$&BAx!)bpH>$9L3v6(6Uh{U~ z+C_hca0w;IiKpPf==p71!S6s9C}uw>Dn*S-$Fp(sgAgu1ez49C?_-4(yXVL6AHvizytC0#&T}`)AWawR%7Z={TIP zO&7vnFUltDwlcDjg`H|8&>KvrbEi4ZZ=in@@q{{6&9o0co`rg8Ripu91Ml#{Yfyfh z5~@jc^g2+*9sY1l+msPHvfk)RXeo57c2%UfF z>=O&Zkp<2Ft#&xek2e0QQ$Q9gP&(rf6A4)6(?ghl53`AP)6g@zeH8tC(0w4uUyJ|7 z4h~MaSzC{+?;Y%$SZBOTDS~vG((oqyR+W4C^k2W$S@DTgPk0M_gr%MO5FW!^CWWg2 z4@`hT))Y0eQ*S+(OTGHdV7U4a~rN0);G_s z?xWt;$!*zc$Y>zTGb|Uwim1Y)sXp#X^TOuTJL#n~F~frs1m}5S+9O6lYLR~c)t0^v znin{D40Ve$m4#sh8%={%*21u?<@UHiF*7#Lt|^Zy{e}ELrhw3KECj~ak-vUHMXDO3 z>F)Skl}NiPHjBUCVH<4MrnV_z}fwG^*T`G`6G#8$TiOP<(Si%xqPqetDG=|o52zt zAag%uE3Nf-GmN{0{KFXOz%(RKB{ue1D|g6 zPBQrg4)by?KVS2|RNX9|D$&Q?(bzA#M%Ep6N1@BM?a}>^f#UW=k_CUsbN{0E$+{vR zY}Qywfp-(2g*=$G%I7co*2+2fvcx5P6HnuGocBE&;Cht`_$j8c z3FEL9LAXGJaK;nbN-ck15uvgZ`rI>N97q)I>nNEFACd8!>z+)vIsNt2fJ1keCp^jc zXNQR~JFC<0_X(ZBFcY~uu}pXQkHH^p7oZ9p1zDgcj13;ob8!ECV5y+Z_Lmw z8+GqgkiZ(Pi4;lQL`9{$_KVj5Z6i?>_RNt%o<`>o_sO1`R~@jFK zAM?A_SwKP7dF94}+6=rl52{99AX)?fiM5_#9aN~vAoQIN{h}n~PB?7KwB}!WAGt*y z^x*o^WDQQWlIVXMg|^fVA?O_BGSIh~6j55h;b<5d#ujnI`m z_hjLesGa95Yv&S+Kr1DG;uco^-J#_DSB`FNiCXSV0f2uH`=1IzDH-Q~DX85TNV<1h zTP~sy2-AEA0Bq}_oh!${Dc@SN2zKEwD<;O4-*PG>=li=cl(+pW7YCu+*9l3(I?pNu zhj!J<8TAMdqHSZ&T9(a;3sz~>>I@ckBd(H&zBkXAlCt0JC8slF--v5OFjL;(h}a0H zd(nlBU{&W0D3jF5y!7cY~ALMAP3KNPTs5EHK9 zn#L)|jKEsO2nU=Ox+duhPGw@-C@VMxc+w46aQeX{WuVaqb8#m5*0=ZT4(aqPhJJ^_ z9%bR)JYE5v@Vow(T7ujJ^KT5OBpc)8n^HerkLwaftbA-2dvYs<73xYC{`E^ zL-UWvn?}-Cip&Fk=R0y8^l`tL$YG<(g>CuFSM~}K`JsN}oSF{k*mdXt-dIfq2IY$J z=Bu4QL?p0dC>$Ht`;kkMO&GS~sZHaznnQolrLQdp_Qj$0bttg1MG_Ab{a=(rb_CpM z06eU7@6>F;R38xoX{aHgN{oTa_kf!vN$N-g=Zh>%E%EYam(no`#;uaGqA zJ709hn+jvzU}k#vUmC4O7Qf&HQko$|X)l*LgidTndgP7oO+akPv%MpWV8Ap9#}xVN z#-d!pGsxM+({(`?S;4*T?#HErwrhX5Nr$H@C_{M55e}No^DTzpVpCNEeQl{2N&j1U z6r)G~A@7H>;PQ}l^Pn4~9Un-Ar)Fx8;d?Zr0_7-X@25n+N>S4d+pFNnFB^CA18r`t z9ASxzp8%L9nfqv+#T!A`>oZtbl`Ni*kR)ysKRR zQIMYa7I>}gqW9&YT^-a6m(^_%R!djgBZLev4F;us>CgpG8WkS zpyls%(AP}h$BT{_2WWpOh#VKck13klnt}cuN>l}sV!4Ec(z6EF1`hY*yQUgT7_8DD zZbxPCn--=JOh7~yCxdxiPF#3n|I?&96Vsw|oRQu;l2^pL# zp7667)DT*jxMx7NCnW(0plHg&o%))^c~?-5rZ zPCv7eLg72iw8w&Z3rJG@vaK26JST`Kha()Tdvc4Wi6$IR{%ZU&cQ247zD>=%JM4(c zO_KB2jIRM$nIEMYoB-^TpMbQCw^UF?nmGHCdKFlOP8$^gqF2mE-l&x2+e7dxZp7Ey z!k53_c_qVq6t#bDGj3}@%63w2vY2KxV2cML@~p3SH~|`veUgQOV#$#hMhs0i<4<0A zv-etuk%Cc!i-Li0!(Ri(%0dawZAgOgBkG%uj#gPU^2*!ZIXcnEX|+61VNe znm~Elh7jI#=YU>Iv}`ok9Q`df&Wsj3A{cbWQ792G3=cp*9tHcv1f#<5z)@YKe+@FHu3(@zv3`Df*kU;3J6S0{F=sib7r|gq0>7w#Ts9O`3V7) zAUeYwBoEkc4DfVM)p=nT)N+c&5Gk zuwM5&&AAdMry-xPCI+COAr8N3LvlA=+^_HK%J+Yq`&|V$e6^=%l!YwsK{iI+0zfO< zvn?MM6(~w0s$ueW+RpL>G(c`ZND4lKq_CDF1;W z!}PJYkUU>@kK@m1#JNGaM6`P~1nA!px^fP}! zsA6O6-{J*8Mj2;eQ}K7-Zlhq`)Nen%qF^R}FpTk3ja@1f3kV99*dB&KXjR zmG9Sj1s9Ue_AsgfPhc0hYr@N&oF&iI#GT5^QlEJH)w9M22TRV6Y`C)QusEp(_^E@y zYs^Zy7!#C{X!yhHBlZA+FHcgLdN6i z$>9EF^$n!gCb?#L)s67=HXxK<-WM1;8dDL)(AJS=-6)uCv~1TOL2bX<s!N&^NSKU{NW&dG3+V_=cHup#^S}YzV+-W_L)~B%Wdw$2fAzNmktUnej4*d zfL9>EahkAh)wXq7rt17X+P;4tD!rEn-7cg!9Qos29937()E$!ln@|gncH%ZX3@tMP z9)*9~VA0$;q4nS2NXhfzq|OamWM%cQQ5&9E>0dJP{V1#pZ-v(~!}(+jP}Tm4Xxx^v zDFK}v@K?*-Ry6z@?9UJn_&E^q>rbim{V>F9-ngg-RVXq)^(09!wSvyd)C#^RWE1rHiA=S(l)BlOAVGICad zGug8%uRKcT;X?&ldJ#a;cptkBM;VD&w;RjSKDEz!yB;Hht1WB1zCU>e=ZlVyM+DsQ zSZoo2ZZwR2o&9FH=J1}HWmx@itPF{7A~x~`6Zo);G7qyqn~>Q*{9zBByuc(J}+^V{i!mr+$t4-z_97QDck-x~+5DF-Hln0n~uZu31LN*BFBhPWs zFqIjQItLLz@Wx_{m_4TeA_(Wsm9Ik&gKIN zg}*y1%&0LYLzB?|u8n~YiG0|fGG3i82<%QJGpNn(3A5?6tZ@49p+n#Ne**pG!7hCX z8CUvSgvz~Da3c511U$$M(y@@POg8UUK4k5fg8cMm&_||=4D^^Sh!^Gn(|x{1Dhh(K z^k=9m)@gHMxEX&jkY0xyfJw_|DS#Za{9nlIghq7^{A;z03}>7SvHr6gAA35 zO4lq%e1hK`FA0-+S9s5!xw^;yaa_Z5b||zu#k*J`@`itY)-V#PN-XJ*6cR4jVU9?d z;HtZ7Ls-uI7XY{~afv!fUMP($)W(?c5}&b_ram@ZMSMm-7}X#G&9GGtK0}0PXKdm- z!<%AqLU@F!H86uuKpD(f8A`@~(90KCx0f91RW6rMv5z~5Wk_ZQ4q6p({pNiW*I+D6 z9iViB-^_o==O#~!Gt9s8bWsvRq%L-rqSdC9(iiZ7UIb}XLCgjpWpe+XeGyee=`F{y z^2cSYv`=if!e%BYPX)~C^x1+5Gj#$GP8;Fg%L4`Go!*9&6i& zst6MC>Yi~z(;(c1l$s;dc{BM)hTxfEkOvU2*VyO{$_|#QkpZi~E^!8lZ14C3m+k4o zquGBQ7Xq1>M(qLhexQIko;#EA$f@`!a%J#BGANGGA{83mDi$`ex~7uGtr|4{ zdRNgck<0n&+D@umW_iKU1+3#G9L|FaJ3D_^G{vD`++5lQ*J6td~3}pICgG;$oJ>Ostqq1jeFS$n7J**6Yd%tkFwmHo;7Sa2kEs%b@lk|EWNp`%U zbiwjUhPX}M#?R|lw~Cr?fb-8k1r7(;jpfKU=)c5I5WT@UoAc4|6)!J;{F@ z*^?^e7zTQ2S=z~~U)3Hk?dmPv|G=tj+r=#<=fM$dUuQmBCd-*YShncpQQQ}I^jjt1 zbo^r&U}4=A5`kxX17G0;TaR~tw`FvbY)y+rn7T>apE<&O@@nO!1*K3pIs6nO>L9`1 zK5ab2nk?UIRE0V(9b{jI&VKHu;lFFq{HbN8lzk?-S2Okb4jGT=Wv_NTvG-=XA zY{-pFZ%`R?+fRZ-9#@l$7x!Iibjo<^oc_xQduiz)823ig+G2zWZ+4EafIwP@$&hCc z(iax$QXC}<+{f`Uyf5U8QNCYc*IwK2aUQ3VVW3;7{*&w%N(NvW00000zCIJ4 delta 6111 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.10-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.10-compact.zip index 9d8e4dfdfb146cda26eb817fabfff164e5c87244..e21a9e5c0f500168ba217af602e31377b7f39fd8 100644 GIT binary patch delta 7131 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 R0H^+w>ljJ~zZ(Dm001UghwuOZ delta 6368 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.11-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.11-compact.zip index 403b3aca9cb333c689063925ed5121b51e84fb96..61d5760ce7fca51104f083d7f501e25c441ffb8e 100644 GIT binary patch delta 7130 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 N@EA%4yBh!i008NK(wzVR delta 6373 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.13-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.13-compact.zip index d0f3c1b4c3869fe762972a723aec8613e5bc4586..015644b041d321732bd84774c5f5f017393a98d5 100644 GIT binary patch delta 7118 zcmV;<8!_b1GNCvdP)h>@KL7#%4gh+8hgNxR4^eX)002M!001VF5E&_vL@9qU^+P_6 z+Z$mK0g+maPHU8a{$#J8tR~ z(IYbZ`e`up#qzSG+@mQ133M7uz~c7Q+*1mQyV9lR)vJ(lhin{LLBL2NH`PDKZ5F!( z;B0$(y8u>*4|d&Rlz`~{ZCrnK&p(c!jB@KJ=K^GK|I6EXwDRsFNU74vqdIO1T3EX=8$R^)ItENaTNPOW)fv(}#f#^h|Y-Oqy8Yan-#(@`W)!4VU4&nr?N`gD~3F>2Rg4 z)vOmFNOh)SGk*C3E2ILp)rH>MGFFOMB=p6X3T>>=A1DF0ND6;pykz;x-Y%;l@M|w6 zUyS(WeYBl1Erm8G08aKdW5~Up@_xT& znWOR;+C3J)aOBT%ClfzqpfAoSl1_Kgoh3)ln#vXoGg}L3m7}S0t?@jFf!2WsN+B4U z{cV)BIBc#Zy1Rc#r#!bwa$-o!9+%IfJq{`LAh!`U8;sZx+2TF(jfFgd0j#kUw)DDE z*M|vg{Qyd2=`|5v_mR=-RS)*IJc(<@;YT>Sl zm3GOPTzTVp0REjjTikVdb=73=>|vdlPF%-s0`GdrW(A+s2q6T1x!M%a^zn%l7H+Jw z`}AAJAWPC!1yia#CNj{ot-8#u!(W%yQC9e4gDya3I%!wqpIpl5+Y{vEq-|fb!YQn_ z(a0P1=!<`^Jcw?GT|ps1$jH4RPdJpfZ(3GIgK>sB6M0{A-p%)G`-cv$Jh;l%qW0xJ zg_L?9v)BGm-kIadz=znGeAugtIoBeSEWRNE<1=wDXBe9gx8g_gfh~~l4N^j)U`UIY zZrOVlzn(4UYARYAE|+mrpisq&kT!hRS>d@K`sRO_RZsuJ#PasP829sA%mt~a@#wIb z$8?#_EC93awRK?5#6p)tfGN?W2CjMJs73Z@;@AUz{wu!=??;GRt-EUB|NAbX#JmUlOq$OddALICmPrLm zW8{CMs}KItDWR*eGa^bTakcyVDjA4~tz~ru;x>z^8v-U&1y$EN+E-zA^URrB+SM7u zITp?2aQ_$r{BWHMulTyt7!gS|JWw~#UgInVΜ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 delta 6393 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 H00000{UL7| diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.2-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.2-compact.zip index 97a2ded43d8fef1977765ffb973b6737fadd98ee..c6ebabb42c639a12c02c31620122f55a10707e86 100644 GIT binary patch delta 6873 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 K1`!wl0000(1@0&S diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.3-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.3-compact.zip index 76a266d459ff2f0cd4d94d269f9a4f8b636bf42a..877ab7c58cc0eae5e3c1aeed72744b7747df8876 100644 GIT binary patch delta 6862 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 I8UO$Q0MeL0tpET3 delta 6188 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 U8UO$g0RfYH7)b{C8UO$Q09gZx-v9sr delta 6256 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 aRDJV>i5wUJ0KMA)lN1|C24ENf0002t?J=AH diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.5-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.5-compact.zip index a35d6db5843cd7298e25b35217bd7a6c8dd37ca7..01a12fb78ebf02f1ef3a08442f63d32def3c9303 100644 GIT binary patch delta 6967 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.6-compact.zip b/tests/e2e/solc_parsing/test_data/compile/trycatch-0.6.0.sol-0.8.6-compact.zip index 69687eddd81f81ce6dd6429071c7addb9a0c5ee8..82b60acffcba94e23f64ace3c675d149a073e8f7 100644 GIT binary patch delta 6956 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 delta 6392 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 aRB^T9c(E7&09xAsli?dl2K5*K00025o@sIb diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.0-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.0-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.1-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.1-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.10-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.10-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.10-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.11-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.11-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.11-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.12-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.12-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.12-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.2-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.2-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.3-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.3-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.4-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.4-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.5-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.5-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.6-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.6-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.7-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.7-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.7-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.7-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.8-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.8-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.8-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.9-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.9-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.6.9-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.0-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.0-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.1-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.1-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.2-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.2-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.3-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.3-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.4-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.4-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.5-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.5-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.6-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.7.6-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.0-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.0-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.1-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.1-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.10-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.10-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.10-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.11-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.11-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.11-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.12-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.12-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.12-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.13-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.13-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.13-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.13-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.14-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.14-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.14-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.14-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.15-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.15-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.15-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.15-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.2-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.2-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.3-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.3-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.4-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.4-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.5-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.5-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.6-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.6-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.7-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.7-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.7-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.7-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.8-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.8-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.8-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.9-compact.json index 6099f6be4..ec0954baa 100644 --- a/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.9-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/trycatch-0.6.0.sol-0.8.9-compact.json @@ -3,7 +3,7 @@ "balanceOf(address)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" }, "C": { - "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n20[label=\"Node Type: CATCH 20\n\"];\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n}\n", + "tryCatchFunctionCall()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: NEW VARIABLE 1\n\"];\n1->2;\n2[label=\"Node Type: TRY 2\n\"];\n2->3;\n2->5;\n2->7;\n3[label=\"Node Type: CATCH 3\n\"];\n3->4;\n4[label=\"Node Type: EXPRESSION 4\n\"];\n4->7;\n5[label=\"Node Type: CATCH 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n6->7;\n7[label=\"Node Type: TRY 7\n\"];\n7->8;\n7->10;\n7->12;\n8[label=\"Node Type: CATCH 8\n\"];\n8->9;\n9[label=\"Node Type: EXPRESSION 9\n\"];\n9->12;\n10[label=\"Node Type: CATCH 10\n\"];\n10->11;\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->12;\n12[label=\"Node Type: TRY 12\n\"];\n12->13;\n12->15;\n12->17;\n12->19;\n13[label=\"Node Type: CATCH 13\n\"];\n13->14;\n14[label=\"Node Type: EXPRESSION 14\n\"];\n14->19;\n15[label=\"Node Type: CATCH 15\n\"];\n15->16;\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->19;\n17[label=\"Node Type: CATCH 17\n\"];\n17->18;\n18[label=\"Node Type: EXPRESSION 18\n\"];\n18->19;\n19[label=\"Node Type: TRY 19\n\"];\n19->20;\n19->21;\n19->23;\n20[label=\"Node Type: CATCH 20\n\"];\n20->23;\n21[label=\"Node Type: CATCH 21\n\"];\n21->22;\n22[label=\"Node Type: EXPRESSION 22\n\"];\n22->23;\n23[label=\"Node Type: TRY 23\n\"];\n23->24;\n23->32;\n24[label=\"Node Type: CATCH 24\n\"];\n24->25;\n25[label=\"Node Type: NEW VARIABLE 25\n\"];\n25->28;\n26[label=\"Node Type: BEGIN_LOOP 26\n\"];\n26->29;\n27[label=\"Node Type: END_LOOP 27\n\"];\n28[label=\"Node Type: NEW VARIABLE 28\n\"];\n28->26;\n29[label=\"Node Type: IF_LOOP 29\n\"];\n29->30[label=\"True\"];\n29->27[label=\"False\"];\n30[label=\"Node Type: EXPRESSION 30\n\"];\n30->31;\n31[label=\"Node Type: EXPRESSION 31\n\"];\n31->29;\n32[label=\"Node Type: CATCH 32\n\"];\n}\n", "tryCatchContractDeployment()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: TRY 1\n\"];\n1->2;\n1->6;\n2[label=\"Node Type: CATCH 2\n\"];\n2->3;\n3[label=\"Node Type: TRY 3\n\"];\n3->4;\n3->5;\n4[label=\"Node Type: CATCH 4\n\"];\n5[label=\"Node Type: CATCH 5\n\"];\n6[label=\"Node Type: CATCH 6\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/trycatch-0.6.0.sol b/tests/e2e/solc_parsing/test_data/trycatch-0.6.0.sol index 68899e4a9..2c1e1e939 100644 --- a/tests/e2e/solc_parsing/test_data/trycatch-0.6.0.sol +++ b/tests/e2e/solc_parsing/test_data/trycatch-0.6.0.sol @@ -32,6 +32,14 @@ contract C { } catch { actualBalance = 0; } + + try ERC20(msg.sender).balanceOf(address(this)) returns (uint balance) { + uint c; + for (uint i; i < balance; i++) { + c++; + } + } catch { + } } function tryCatchContractDeployment() public { From 85095f936509964522a794a498f9ec8b570ae4a2 Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 7 Apr 2023 16:45:16 +0200 Subject: [PATCH 060/220] Remove unneeded argument --- slither/solc_parsing/declarations/function.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index 6b1846107..917f7a886 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -1145,14 +1145,12 @@ class FunctionSolc(CallerContextExpression): node.set_sons([start_node]) start_node.add_father(node) - def _fix_try(self, node: Node, visited: set[Node] = None) -> None: - if visited is None: - visited = set() + def _fix_try(self, node: Node) -> None: end_node = next((son for son in node.sons if son.type != NodeType.CATCH), None) if end_node: for son in node.sons: if son.type == NodeType.CATCH: - self._fix_catch(son, end_node, visited) + self._fix_catch(son, end_node, set()) def _fix_catch(self, node: Node, end_node: Node, visited: set[Node]) -> None: if not node.sons: From 99cdd1f72a4386208e92c5d2318815a6727afcd9 Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 7 Apr 2023 16:55:48 +0200 Subject: [PATCH 061/220] Type hint --- slither/solc_parsing/declarations/function.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index 917f7a886..7438a7bb0 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -1,5 +1,5 @@ import logging -from typing import Dict, Optional, Union, List, TYPE_CHECKING, Tuple +from typing import Dict, Optional, Union, List, TYPE_CHECKING, Tuple, Set from slither.core.cfg.node import NodeType, link_nodes, insert_node, Node from slither.core.cfg.scope import Scope @@ -1152,7 +1152,7 @@ class FunctionSolc(CallerContextExpression): if son.type == NodeType.CATCH: self._fix_catch(son, end_node, set()) - def _fix_catch(self, node: Node, end_node: Node, visited: set[Node]) -> None: + def _fix_catch(self, node: Node, end_node: Node, visited: Set[Node]) -> None: if not node.sons: link_nodes(node, end_node) else: From 0a6197560156e6b926eb480bc8e943e56b8da76e Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 10 Apr 2023 08:37:12 -0500 Subject: [PATCH 062/220] address reviewer suggestions --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 686ded908..6e76425dd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -47,7 +47,7 @@ A code walkthrough is available [here](https://www.youtube.com/watch?v=EUl3UlYSl Instructions for installing a development version of Slither can be found in our [wiki](https://github.com/crytic/slither/wiki/Developer-installation). -To run the unit tests, you need to clone this repository and run `make test`. Run a specific test with `make test TESTS=$test_name`. +To run the unit tests, you need to clone this repository and run `make test`. Run a specific test with `make test TESTS=$test_name`. The names of tests can be obtained with `pytest tests --collect-only`. ### Linters @@ -73,7 +73,7 @@ How do I know what kind of test(s) to write? - End-to-end: functionality that requires invoking `Slither` and inspecting some output such as printers and detectors. - Unit: additions and modifications to objects should be accompanied by a unit test that defines the expected behavior. Aim to write functions in as pure a way as possible such that they are easier to test. -- Tools: tools built on top of Slither (`slither/tools) but not apart of its core functionality +- Tools: tools built on top of Slither (`slither/tools`) but not apart of its core functionality #### Adding detector tests From ae7f0b2f052afbbde1684d988d636936105e84fe Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 10 Apr 2023 11:47:56 -0500 Subject: [PATCH 063/220] Only check internal calls to Functions --- slither/utils/upgradeability.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 29edfec0f..1bff3c153 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -298,7 +298,7 @@ def tainted_inheriting_contracts( new_taint = TaintedExternalContract(c) for f in c.functions_declared: # Search for functions that call an inherited tainted function or access an inherited tainted variable - internal_calls = f.all_internal_calls() + internal_calls = [c for c in f.all_internal_calls() if isinstance(c, Function)] if any( call.canonical_name == t.canonical_name for t in tainted.tainted_functions From ea10acad827b7a80085edd1c3020e66fa464ff17 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 10 Apr 2023 11:49:02 -0500 Subject: [PATCH 064/220] Fix missing import --- tests/unit/utils/test_code_generation.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/utils/test_code_generation.py b/tests/unit/utils/test_code_generation.py index 99f8689a4..ee70fee87 100644 --- a/tests/unit/utils/test_code_generation.py +++ b/tests/unit/utils/test_code_generation.py @@ -1,3 +1,4 @@ +import os from pathlib import Path from solc_select import solc_select From 89fda0667e57bc541e99644ddf1733052ee66801 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 10 Apr 2023 11:49:51 -0500 Subject: [PATCH 065/220] Pylint --- tests/unit/utils/test_code_generation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/utils/test_code_generation.py b/tests/unit/utils/test_code_generation.py index ee70fee87..3684b10b4 100644 --- a/tests/unit/utils/test_code_generation.py +++ b/tests/unit/utils/test_code_generation.py @@ -24,7 +24,7 @@ def test_interface_generation() -> None: assert actual == expected actual = generate_interface(sl.get_contract_from_name("TestContract")[0], unroll_structs=False) - expected_path = os.path.join(CODE_TEST_ROOT, "TEST_generated_code_not_unrolled.sol") + expected_path = os.path.join(TEST_DATA_DIR, "TEST_generated_code_not_unrolled.sol") with open(expected_path, "r", encoding="utf-8") as file: expected = file.read() From 27bcb2c269fd9b0645eefc358cb122bca5bb953d Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Sat, 15 Apr 2023 19:16:18 -0500 Subject: [PATCH 066/220] fix wiki link --- slither/detectors/variables/var_read_using_this.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/detectors/variables/var_read_using_this.py b/slither/detectors/variables/var_read_using_this.py index a2b93a7d8..537eecf8a 100644 --- a/slither/detectors/variables/var_read_using_this.py +++ b/slither/detectors/variables/var_read_using_this.py @@ -17,7 +17,7 @@ class VarReadUsingThis(AbstractDetector): IMPACT = DetectorClassification.OPTIMIZATION CONFIDENCE = DetectorClassification.HIGH - WIKI = "https://github.com/crytic/slither/wiki/Vulnerabilities-Description#public-variable-read-in-external-context" + WIKI = "https://github.com/crytic/slither/wiki/Detector-Documentation#public-variable-read-in-external-context" WIKI_TITLE = "Public variable read in external context" WIKI_DESCRIPTION = "The contract reads its own variable using `this`, adding overhead of an unnecessary STATICCALL." From ca82da060358664b79b197d1446209cde584590c Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 17 Apr 2023 12:32:02 -0500 Subject: [PATCH 067/220] Update compare docstring --- slither/utils/upgradeability.py | 1 + 1 file changed, 1 insertion(+) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 1bff3c153..b6915b4f2 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -115,6 +115,7 @@ def compare( new-functions: list[Function], modified-functions: list[Function], tainted-functions: list[Function] + tainted-contracts: list[TaintedExternalContract] """ order_vars1 = [ From 853051ebf473fa77dfb1029170c5f034ad02ea99 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 17 Apr 2023 13:53:05 -0500 Subject: [PATCH 068/220] Reduce tainted variables to only written --- slither/utils/upgradeability.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index b6915b4f2..516855130 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -177,15 +177,13 @@ def compare( if len(modified_calls) > 0 or len(tainted_vars) > 0: tainted_functions.append(function) - # Find all new or tainted variables, i.e., variables that are read or written by a new/modified/tainted function + # Find all new or tainted variables, i.e., variables that are written by a new/modified/tainted function for var in order_vars2: - read_by = v2.get_functions_reading_from_variable(var) written_by = v2.get_functions_writing_to_variable(var) - # if v1.get_state_variable_from_name(var.name) is None: if next((v for v in v1.state_variables_ordered if v.name == var.name), None) is None: new_variables.append(var) elif any( - func in read_by or func in written_by + func in written_by for func in new_modified_functions + tainted_functions ): tainted_variables.append(var) From 823337e45db37cc6de39c452b2898ba0b1748948 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 17 Apr 2023 14:07:34 -0500 Subject: [PATCH 069/220] Update test --- tests/unit/utils/test_upgradeability_util.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/unit/utils/test_upgradeability_util.py b/tests/unit/utils/test_upgradeability_util.py index 88adcf00f..7a2931d52 100644 --- a/tests/unit/utils/test_upgradeability_util.py +++ b/tests/unit/utils/test_upgradeability_util.py @@ -34,7 +34,6 @@ def test_upgrades_compare() -> None: assert len(missing_vars) == len(tainted_contracts) == 0 assert new_vars == [v2.get_state_variable_from_name("stateC")] assert tainted_vars == [ - v2.get_state_variable_from_name("stateB"), v2.get_state_variable_from_name("bug"), ] assert new_funcs == [v2.get_function_from_signature("i()")] From 6ccc8cfee763448aa15c4ba10aaf093420479553 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 17 Apr 2023 14:07:42 -0500 Subject: [PATCH 070/220] Black --- slither/utils/upgradeability.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 516855130..5be745bd6 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -182,10 +182,7 @@ def compare( written_by = v2.get_functions_writing_to_variable(var) if next((v for v in v1.state_variables_ordered if v.name == var.name), None) is None: new_variables.append(var) - elif any( - func in written_by - for func in new_modified_functions + tainted_functions - ): + elif any(func in written_by for func in new_modified_functions + tainted_functions): tainted_variables.append(var) # Find all external contracts and functions called by new/modified/tainted functions From 97307cd1f0ea9157d15a6b9bb9044420cca55e94 Mon Sep 17 00:00:00 2001 From: webthethird Date: Mon, 17 Apr 2023 14:39:14 -0500 Subject: [PATCH 071/220] Only include 'view' in func sig if not 'pure' --- slither/utils/code_generation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index c22a72526..b2da93764 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -118,7 +118,7 @@ def generate_interface_function_signature( or func.is_receive ): return None - view = " view" if func.view else "" + view = " view" if func.view and not func.pure else "" pure = " pure" if func.pure else "" payable = " payable" if func.payable else "" returns = [ From f8794a39583e410acd77d2ab8ba7a95eef1faa11 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 17 Apr 2023 14:57:29 -0500 Subject: [PATCH 072/220] update CONTRIBUTING.md to explain compiling and adding snapshot tests --- CONTRIBUTING.md | 10 ++-- tests/e2e/detectors/test_detectors.py | 66 ++++----------------------- 2 files changed, 16 insertions(+), 60 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6e76425dd..7017c7802 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -79,10 +79,12 @@ How do I know what kind of test(s) to write? For each new detector, at least one regression tests must be present. -1. Create a test in `tests/e2e/detectors` -2. Update `ALL_TEST` in `tests/e2e/detectors/test_detectors.py` -3. Run `python tests/e2e/detectors/test_detectors.py --generate`. This will generate the json artifacts in `tests/expected_json`. Add the generated files to git. If updating an existing detector, identify the respective json artifacts and then delete them, or run `python ./tests/test_detectors.py --overwrite` instead. -4. Run `pytest tests/e2e/detectors/test_detectors.py` and check that everything worked. +1. Create a folder in `tests/e2e/detectors/test_data` with the detector's argument name. +2. Create a test contract in `tests/e2e/detectors/test_data//`. +3. Update `ALL_TEST` in `tests/e2e/detectors/test_detectors.py` +4. Run `python tests/e2e/detectors/test_detectors.py --compile` to create a zip file of the compilation artifacts. +5. `pytest tests/e2e/detectors/test_detectors.py --insta update-new`. This will generate a snapshot of the detector output in `tests/e2e/detectors/snapshots/`. If updating an existing detector, run `pytest tests/e2e/detectors/test_detectors.py --insta review` and accept or reject the updates. +6. Run `pytest tests/e2e/detectors/test_detectors.py` to ensure everything worked. Then, add and commit the files to git. > ##### Helpful commands for detector tests > diff --git a/tests/e2e/detectors/test_detectors.py b/tests/e2e/detectors/test_detectors.py index 26ea93743..37c1cbd69 100644 --- a/tests/e2e/detectors/test_detectors.py +++ b/tests/e2e/detectors/test_detectors.py @@ -33,7 +33,6 @@ class Test: # pylint: disable=too-few-public-methods """ self.detector = detector self.test_file = test_file - self.expected_result = test_file + "." + solc_ver + "." + detector.__name__ + ".json" self.solc_ver = solc_ver if additional_files is None: self.additional_files = [] @@ -44,6 +43,11 @@ class Test: # pylint: disable=too-few-public-methods def set_solc(test_item: Test): # pylint: disable=too-many-lines # hacky hack hack to pick the solc version we want env = dict(os.environ) + from solc_select import solc_select + + if not solc_select.artifact_path(test_item.solc_ver).exists(): + print("Installing solc version", test_item.solc_ver) + solc_select.install_artifacts([test_item.solc_ver]) env["SOLC_VERSION"] = test_item.solc_ver os.environ.clear() os.environ.update(env) @@ -1638,26 +1642,12 @@ ALL_TEST_OBJECTS = [ ), ] - -def get_all_tests() -> List[Test]: - # installed_solcs = set(get_installed_solc_versions()) - # required_solcs = {test.solc_ver for test in ALL_TEST_OBJECTS} - # missing_solcs = list(required_solcs - installed_solcs) - # if missing_solcs: - # install_solc_versions(missing_solcs) - - return ALL_TEST_OBJECTS - - -ALL_TESTS = get_all_tests() - GENERIC_PATH = "/GENERIC_PATH" TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" - # pylint: disable=too-many-locals -@pytest.mark.parametrize("test_item", ALL_TESTS, ids=id_test) +@pytest.mark.parametrize("test_item", ALL_TEST_OBJECTS, ids=id_test) def test_detector(test_item: Test, snapshot): test_dir_path = Path( TEST_DATA_DIR, @@ -1681,38 +1671,6 @@ def test_detector(test_item: Test, snapshot): assert snapshot() == actual_output -def _generate_test(test_item: Test, skip_existing=False): - test_dir_path = Path( - TEST_DATA_DIR, - test_item.detector.ARGUMENT, - test_item.solc_ver, - ).as_posix() - test_file_path = Path(test_dir_path, test_item.test_file).as_posix() - expected_result_path = Path(test_dir_path, test_item.expected_result).absolute().as_posix() - - if skip_existing: - if os.path.isfile(expected_result_path): - return - - set_solc(test_item) - sl = Slither(test_file_path) - sl.register_detector(test_item.detector) - results = sl.run_detectors() - - results_as_string = json.dumps(results) - test_file_path = test_file_path.replace("\\", "\\\\") - results_as_string = results_as_string.replace(test_file_path, GENERIC_PATH) - - for additional_file in test_item.additional_files: - additional_path = Path(test_dir_path, additional_file).absolute().as_posix() - additional_path = additional_path.replace("\\", "\\\\") - results_as_string = results_as_string.replace(additional_path, GENERIC_PATH) - - results = json.loads(results_as_string) - with open(expected_result_path, "w", encoding="utf8") as f: - f.write(json.dumps(results, indent=4)) - - def _generate_compile(test_item: Test, skip_existing=False): test_dir_path = Path( TEST_DATA_DIR, @@ -1733,13 +1691,9 @@ def _generate_compile(test_item: Test, skip_existing=False): if __name__ == "__main__": if len(sys.argv) != 2: - print("To generate the json artifacts run\n\tpython tests/test_detectors.py --generate") - elif sys.argv[1] == "--generate": - for next_test in ALL_TESTS: - _generate_test(next_test, skip_existing=True) - elif sys.argv[1] == "--overwrite": - for next_test in ALL_TESTS: - _generate_test(next_test) + print( + "To generate the zip artifacts run\n\tpython tests/e2e/tests/test_detectors.py --compile" + ) elif sys.argv[1] == "--compile": - for next_test in ALL_TESTS: + for next_test in ALL_TEST_OBJECTS: _generate_compile(next_test, skip_existing=True) From 6d28c51022946f91060d811f0731b6988b736033 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 17 Apr 2023 15:06:27 -0500 Subject: [PATCH 073/220] lint --- tests/e2e/detectors/test_detectors.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/e2e/detectors/test_detectors.py b/tests/e2e/detectors/test_detectors.py index 37c1cbd69..e6b87d530 100644 --- a/tests/e2e/detectors/test_detectors.py +++ b/tests/e2e/detectors/test_detectors.py @@ -1,4 +1,3 @@ -import json import os from pathlib import Path import sys @@ -8,6 +7,7 @@ import pytest from crytic_compile import CryticCompile, save_to_zip from crytic_compile.utils.zip import load_from_zip +from solc_select import solc_select from slither import Slither from slither.detectors.abstract_detector import AbstractDetector @@ -43,7 +43,6 @@ class Test: # pylint: disable=too-few-public-methods def set_solc(test_item: Test): # pylint: disable=too-many-lines # hacky hack hack to pick the solc version we want env = dict(os.environ) - from solc_select import solc_select if not solc_select.artifact_path(test_item.solc_ver).exists(): print("Installing solc version", test_item.solc_ver) From 3cba507cd8e49edd023ebe0c63d42f867f8402bb Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 17 Apr 2023 15:02:35 -0500 Subject: [PATCH 074/220] add detector for uses of encode packed that may allow for duplicates encodings --- slither/detectors/all_detectors.py | 1 + slither/detectors/operations/encode_packed.py | 104 ++++++++++++++++++ ...n_0_7_6_encode_packed_collision_sol__0.txt | 15 +++ .../0.7.6/encode_packed_collision.sol | 78 +++++++++++++ .../encode_packed_collision.sol-0.7.6.zip | Bin 0 -> 6125 bytes tests/e2e/detectors/test_detectors.py | 5 + 6 files changed, 203 insertions(+) create mode 100644 slither/detectors/operations/encode_packed.py create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_EncodePackedCollision_0_7_6_encode_packed_collision_sol__0.txt create mode 100644 tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol create mode 100644 tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol-0.7.6.zip diff --git a/slither/detectors/all_detectors.py b/slither/detectors/all_detectors.py index 9722b8793..1a4121083 100644 --- a/slither/detectors/all_detectors.py +++ b/slither/detectors/all_detectors.py @@ -89,3 +89,4 @@ from .functions.protected_variable import ProtectedVariables from .functions.permit_domain_signature_collision import DomainSeparatorCollision from .functions.codex import Codex from .functions.cyclomatic_complexity import CyclomaticComplexity +from .operations.encode_packed import EncodePackedCollision diff --git a/slither/detectors/operations/encode_packed.py b/slither/detectors/operations/encode_packed.py new file mode 100644 index 000000000..ea7b094df --- /dev/null +++ b/slither/detectors/operations/encode_packed.py @@ -0,0 +1,104 @@ +""" +Module detecting usage of more than one dynamic type in abi.encodePacked() arguments which could lead to collision +""" + +from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification +from slither.core.declarations.solidity_variables import SolidityFunction +from slither.slithir.operations import SolidityCall +from slither.analyses.data_dependency.data_dependency import is_tainted +from slither.core.solidity_types import ElementaryType +from slither.core.solidity_types import ArrayType + + +def _is_dynamic_type(arg): + """ + Args: + arg (function argument) + Returns: + Bool + """ + if isinstance(arg.type, ElementaryType) and (arg.type.name in ["string", "bytes"]): + return True + if isinstance(arg.type, ArrayType) and arg.type.length is None: + return True + + return False + + +def _detect_abi_encodePacked_collision(contract): + """ + Args: + contract (Contract) + Returns: + list((Function), (list (Node))) + """ + ret = [] + # pylint: disable=too-many-nested-blocks + for f in contract.functions_and_modifiers_declared: + for n in f.nodes: + for ir in n.irs: + if isinstance(ir, SolidityCall) and ir.function == SolidityFunction( + "abi.encodePacked()" + ): + dynamic_type_count = 0 + for arg in ir.arguments: + if is_tainted(arg, contract) and _is_dynamic_type(arg): + dynamic_type_count += 1 + elif dynamic_type_count > 1: + ret.append((f, n)) + dynamic_type_count = 0 + else: + dynamic_type_count = 0 + if dynamic_type_count > 1: + ret.append((f, n)) + return ret + + +class EncodePackedCollision(AbstractDetector): + """ + Detect usage of more than one dynamic type in abi.encodePacked() arguments which could to collision + """ + + ARGUMENT = "encode-packed-collision" + HELP = "ABI encodePacked Collision" + IMPACT = DetectorClassification.HIGH + CONFIDENCE = DetectorClassification.HIGH + + WIKI = ( + "https://github.com/crytic/slither/wiki/Detector-Documentation#abi-encodePacked-collision" + ) + + WIKI_TITLE = "ABI encodePacked Collision" + WIKI_DESCRIPTION = """Detect collision due to dynamic type usages in `abi.encodePacked`""" + + WIKI_EXPLOIT_SCENARIO = """ +```solidity +contract Sign { + function get_hash_for_signature(string name, string doc) external returns(bytes32) { + return keccak256(abi.encodePacked(name, doc)); + } +} +``` +Bob calls `get_hash_for_signature` with (`bob`, `This is the content`). The hash returned is used as an ID. +Eve creates a collision with the ID using (`bo`, `bThis is the content`) and compromises the system. +""" + WIKI_RECOMMENDATION = """Do not use more than one dynamic type in `abi.encodePacked()` +(see the [Solidity documentation](https://solidity.readthedocs.io/en/v0.5.10/abi-spec.html?highlight=abi.encodePacked#non-standard-packed-modeDynamic)). +Use `abi.encode()`, preferably.""" + + def _detect(self): + """Detect usage of more than one dynamic type in abi.encodePacked(..) arguments which could lead to collision""" + results = [] + for c in self.compilation_unit.contracts: + values = _detect_abi_encodePacked_collision(c) + for func, node in values: + info = [ + func, + " calls abi.encodePacked() with multiple dynamic arguments:\n\t- ", + node, + "\n", + ] + json = self.generate_result(info) + results.append(json) + + return results diff --git a/tests/e2e/detectors/snapshots/detectors__detector_EncodePackedCollision_0_7_6_encode_packed_collision_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_EncodePackedCollision_0_7_6_encode_packed_collision_sol__0.txt new file mode 100644 index 000000000..af7269fcf --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_EncodePackedCollision_0_7_6_encode_packed_collision_sol__0.txt @@ -0,0 +1,15 @@ +EncodePackedCollision.bad4(bytes,bytes) (tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol#34-36) calls abi.encodePacked() with multiple dynamic arguments: + - packed = abi.encodePacked(a,a2,a3,a) (tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol#35) + +EncodePackedCollision.bad2(string,uint256[]) (tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol#24-26) calls abi.encodePacked() with multiple dynamic arguments: + - packed = abi.encodePacked(stra,arra) (tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol#25) + +EncodePackedCollision.bad3_get_hash_for_signature(string,string) (tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol#29-31) calls abi.encodePacked() with multiple dynamic arguments: + - keccak256(bytes)(abi.encodePacked(name,doc)) (tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol#30) + +EncodePackedCollision.bad0(string,string) (tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol#14-16) calls abi.encodePacked() with multiple dynamic arguments: + - packed = abi.encodePacked(stra,strb) (tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol#15) + +EncodePackedCollision.bad1(string,bytes) (tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol#19-21) calls abi.encodePacked() with multiple dynamic arguments: + - packed = abi.encodePacked(stra,bytesa) (tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol#20) + diff --git a/tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol b/tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol new file mode 100644 index 000000000..ab6648119 --- /dev/null +++ b/tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol @@ -0,0 +1,78 @@ +contract ABIencodePacked{ + + uint a; + string str1 = "a"; + string str2 = "bc"; + bytes _bytes = "hello world"; + uint[] arr; + uint[2] arr2; + string[3] str_arr3; /* This nested dynamic type is not supported in abi.encodePacked mode by solc */ + string[] str_array; /* This nested dynamic type is not supported in abi.encodePacked mode by solc */ + bytes[] bytes_array; /* This nested dynamic type and tuples are not supported in abi.encodePacked mode by solc */ + + /* Two dynamic types */ + function bad0(string calldata stra, string calldata strb) external{ + bytes memory packed = abi.encodePacked(stra, strb); + } + + /* Two dynamic types */ + function bad1(string calldata stra, bytes calldata bytesa) external{ + bytes memory packed = abi.encodePacked(stra, bytesa); + } + + /* Two dynamic types */ + function bad2(string calldata stra, uint[] calldata arra) external{ + bytes memory packed = abi.encodePacked(stra, arra); + } + + /* Two dynamic types */ + function bad3_get_hash_for_signature(string calldata name, string calldata doc) external returns (bytes32) { + return keccak256(abi.encodePacked(name, doc)); + } + + /* Two dynamic types between non dynamic types */ + function bad4(bytes calldata a2, bytes calldata a3) external { + bytes memory packed = abi.encodePacked(a, a2, a3, a); + } + + /* Two dynamic types but static values*/ + function good0() external{ + bytes memory packed = abi.encodePacked(str1, str2); + } + + /* Two dynamic types but static values*/ + function good1() external{ + bytes memory packed = abi.encodePacked(str1, _bytes); + } + + /* Two dynamic types but static values*/ + function good2() external{ + bytes memory packed = abi.encodePacked(str1, arr); + } + + /* No dynamic types */ + function good3() external{ + bytes memory packed = abi.encodePacked(a); + } + + /* One dynamic type */ + function good4() external{ + bytes memory packed = abi.encodePacked(str1); + } + + /* One dynamic type */ + function good5() external{ + bytes memory packed = abi.encodePacked(a, str1); + } + + /* One dynamic type */ + function good6() external{ + bytes memory packed = abi.encodePacked(str1, arr2); + } + + /* Two dynamic types but not consecutive*/ + function good7(string calldata a, uint b, string calldata c) external{ + bytes memory packed = abi.encodePacked(a, b, c); + } +} + diff --git a/tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol-0.7.6.zip b/tests/e2e/detectors/test_data/encode-packed-collision/0.7.6/encode_packed_collision.sol-0.7.6.zip new file mode 100644 index 0000000000000000000000000000000000000000..bddf0b7c54da68723a5e32ab06a27bfdfae68599 GIT binary patch literal 6125 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 Date: Mon, 17 Apr 2023 15:14:46 -0500 Subject: [PATCH 075/220] run markdownlint --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7017c7802..1d1a9497f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -79,11 +79,11 @@ How do I know what kind of test(s) to write? For each new detector, at least one regression tests must be present. -1. Create a folder in `tests/e2e/detectors/test_data` with the detector's argument name. +1. Create a folder in `tests/e2e/detectors/test_data` with the detector's argument name. 2. Create a test contract in `tests/e2e/detectors/test_data//`. 3. Update `ALL_TEST` in `tests/e2e/detectors/test_detectors.py` -4. Run `python tests/e2e/detectors/test_detectors.py --compile` to create a zip file of the compilation artifacts. -5. `pytest tests/e2e/detectors/test_detectors.py --insta update-new`. This will generate a snapshot of the detector output in `tests/e2e/detectors/snapshots/`. If updating an existing detector, run `pytest tests/e2e/detectors/test_detectors.py --insta review` and accept or reject the updates. +4. Run `python tests/e2e/detectors/test_detectors.py --compile` to create a zip file of the compilation artifacts. +5. `pytest tests/e2e/detectors/test_detectors.py --insta update-new`. This will generate a snapshot of the detector output in `tests/e2e/detectors/snapshots/`. If updating an existing detector, run `pytest tests/e2e/detectors/test_detectors.py --insta review` and accept or reject the updates. 6. Run `pytest tests/e2e/detectors/test_detectors.py` to ensure everything worked. Then, add and commit the files to git. > ##### Helpful commands for detector tests From 9809da2f6e5034fecccf40c022cd72f044ae3829 Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 18 Apr 2023 10:19:17 -0500 Subject: [PATCH 076/220] Change arguments from `skip_` to `include_`, and invert conditions. --- slither/utils/code_generation.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index b2da93764..f7d0a8db6 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -24,33 +24,37 @@ if TYPE_CHECKING: def generate_interface( contract: "Contract", unroll_structs: bool = True, - skip_events: bool = False, - skip_errors: bool = False, - skip_enums: bool = False, - skip_structs: bool = False, + include_events: bool = True, + include_errors: bool = True, + include_enums: bool = True, + include_structs: bool = True, ) -> str: """ Generates code for a Solidity interface to the contract. Args: contract: A Contract object. - unroll_structs: Specifies whether to use structures' underlying types instead of the user-defined type. + unroll_structs: Whether to use structures' underlying types instead of the user-defined type (default: True). + include_events: Whether to include event signatures in the interface (default: True). + include_errors: Whether to include custom error signatures in the interface (default: True). + include_enums: Whether to include enum definitions in the interface (default: True). + include_structs: Whether to include struct definitions in the interface (default: True). Returns: A string with the code for an interface, with function stubs for all public or external functions and state variables, as well as any events, custom errors and/or structs declared in the contract. """ interface = f"interface I{contract.name} {{\n" - if not skip_events: + if include_events: for event in contract.events: name, args = event.signature interface += f" event {name}({', '.join(args)});\n" - if not skip_errors: + if include_errors: for error in contract.custom_errors: interface += f" error {generate_custom_error_interface(error, unroll_structs)};\n" - if not skip_enums: + if include_enums: for enum in contract.enums: interface += f" enum {enum.name} {{ {', '.join(enum.values)} }}\n" - if not skip_structs: + if include_structs: for struct in contract.structures: interface += generate_struct_interface_str(struct, indent=4) for var in contract.state_variables_entry_points: From 1bbf3f7cf888cb00ee22f0a260e307b4402800cc Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 18 Apr 2023 10:19:38 -0500 Subject: [PATCH 077/220] Check visibility in generate_interface_variable_signature --- slither/utils/code_generation.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index f7d0a8db6..1abc1c1d8 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -72,6 +72,8 @@ def generate_interface( def generate_interface_variable_signature( var: "StateVariable", unroll_structs: bool = True ) -> Optional[str]: + if var.visibility in ["private", "internal"]: + return None if unroll_structs: params = [ convert_type_for_solidity_signature_to_string(x).replace("(", "").replace(")", "") From 7167abd51e30050b369232de70fddd9be46d43f9 Mon Sep 17 00:00:00 2001 From: DarrenChangJR <48514988+DarrenChangJR@users.noreply.github.com> Date: Wed, 19 Apr 2023 02:52:27 +0800 Subject: [PATCH 078/220] Bug Fix: Contract obj is_fully_implemented Previously was not updating the is_fully_implemented property due to incorrectly included in if statement. --- slither/solc_parsing/declarations/contract.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/solc_parsing/declarations/contract.py b/slither/solc_parsing/declarations/contract.py index f3202d00c..0f4aef11e 100644 --- a/slither/solc_parsing/declarations/contract.py +++ b/slither/solc_parsing/declarations/contract.py @@ -170,8 +170,8 @@ class ContractSolc(CallerContextExpression): elif attributes["contractKind"] == "library": self._contract.is_library = True self._contract.contract_kind = attributes["contractKind"] - self._contract.is_fully_implemented = attributes["fullyImplemented"] + self._contract.is_fully_implemented = attributes["fullyImplemented"] self._linearized_base_contracts = attributes["linearizedBaseContracts"] # self._contract.fullyImplemented = attributes["fullyImplemented"] From 4f87672be71c2a2ac95589479dc6c563a6a7d5f7 Mon Sep 17 00:00:00 2001 From: webthethird Date: Tue, 18 Apr 2023 17:14:40 -0500 Subject: [PATCH 079/220] Use inner function to clean up generate_interface_function_signature --- slither/utils/code_generation.py | 71 ++++++++++++++------------------ 1 file changed, 32 insertions(+), 39 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index 1abc1c1d8..0699bb262 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -1,5 +1,5 @@ # Functions for generating Solidity code -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Optional, List from slither.utils.type import ( convert_type_for_solidity_signature_to_string, @@ -17,7 +17,8 @@ from slither.core.declarations import Structure, Enum, Contract if TYPE_CHECKING: from slither.core.declarations import FunctionContract, CustomErrorContract - from slither.core.variables import StateVariable + from slither.core.variables.state_variable import StateVariable + from slither.core.variables.local_variable import LocalVariable # pylint: disable=too-many-arguments @@ -110,12 +111,39 @@ def generate_interface_function_signature( Args: func: A FunctionContract object + unroll_structs: Determines whether structs are unrolled into underlying types (default: True) Returns: The function interface as a str (contains the return values). Returns None if the function is private or internal, or is a constructor/fallback/receive. """ + def format_params_or_returns(variables: List["LocalVariable"], unroll: bool) -> List[str]: + if unroll: + return [ + convert_type_for_solidity_signature_to_string(var.type) + .replace("(", "") + .replace(")", "") + for var in variables + ] + return [ + convert_type_for_solidity_signature_to_string(var.type) + .replace("(", "") + .replace(")", "") + + f" {var.location}" + if isinstance(var.type, ArrayType) + and isinstance(var.type.type, (UserDefinedType, ElementaryType)) + else f"{str(var.type.type)} memory" + if isinstance(var.type, UserDefinedType) + and isinstance(var.type.type, (Structure, Enum)) + else "address" + if isinstance(var.type, UserDefinedType) and isinstance(var.type.type, Contract) + else f"{var.type} {var.location}" + if var.type.is_dynamic + else str(var.type) + for var in variables + ] + name, _, _ = func.signature if ( func not in func.contract.functions_entry_points @@ -127,43 +155,8 @@ def generate_interface_function_signature( view = " view" if func.view and not func.pure else "" pure = " pure" if func.pure else "" payable = " payable" if func.payable else "" - returns = [ - convert_type_for_solidity_signature_to_string(ret.type).replace("(", "").replace(")", "") - if unroll_structs - else convert_type_for_solidity_signature_to_string(ret.type) - .replace("(", "") - .replace(")", "") - + f" {ret.location}" - if isinstance(ret.type, ArrayType) - and isinstance(ret.type.type, (UserDefinedType, ElementaryType)) - else f"{str(ret.type.type)} memory" - if isinstance(ret.type, UserDefinedType) and isinstance(ret.type.type, (Structure, Enum)) - else "address" - if isinstance(ret.type, UserDefinedType) and isinstance(ret.type.type, Contract) - else f"{ret.type} {ret.location}" - if ret.type.is_dynamic - else str(ret.type) - for ret in func.returns - ] - parameters = [ - convert_type_for_solidity_signature_to_string(param.type).replace("(", "").replace(")", "") - if unroll_structs - else convert_type_for_solidity_signature_to_string(param.type) - .replace("(", "") - .replace(")", "") - + f" {param.location}" - if isinstance(param.type, ArrayType) - and isinstance(param.type.type, (UserDefinedType, ElementaryType)) - else f"{str(param.type.type)} memory" - if isinstance(param.type, UserDefinedType) - and isinstance(param.type.type, (Structure, Enum)) - else "address" - if isinstance(param.type, UserDefinedType) and isinstance(param.type.type, Contract) - else f"{param.type} {param.location}" - if param.type.is_dynamic - else str(param.type) - for param in func.parameters - ] + returns = format_params_or_returns(func.returns, unroll_structs) + parameters = format_params_or_returns(func.parameters, unroll_structs) _interface_signature_str = ( name + "(" + ",".join(parameters) + ") external" + payable + pure + view ) From 1067dc2e9e8e14d1b059bd218229cb0a1266c908 Mon Sep 17 00:00:00 2001 From: DarrenChangJR <48514988+DarrenChangJR@users.noreply.github.com> Date: Wed, 19 Apr 2023 13:40:45 +0800 Subject: [PATCH 080/220] Remove legacy comment Co-authored-by: alpharush <0xalpharush@protonmail.com> --- slither/solc_parsing/declarations/contract.py | 1 - 1 file changed, 1 deletion(-) diff --git a/slither/solc_parsing/declarations/contract.py b/slither/solc_parsing/declarations/contract.py index 0f4aef11e..74a1cbcf0 100644 --- a/slither/solc_parsing/declarations/contract.py +++ b/slither/solc_parsing/declarations/contract.py @@ -173,7 +173,6 @@ class ContractSolc(CallerContextExpression): self._contract.is_fully_implemented = attributes["fullyImplemented"] self._linearized_base_contracts = attributes["linearizedBaseContracts"] - # self._contract.fullyImplemented = attributes["fullyImplemented"] # Parse base contract information self._parse_base_contract_info() From 2a1d7d59c2e3b273a08f0e032b5eb535e3d06760 Mon Sep 17 00:00:00 2001 From: DarrenChangJR <48514988+DarrenChangJR@users.noreply.github.com> Date: Wed, 19 Apr 2023 13:50:28 +0800 Subject: [PATCH 081/220] Add new test for concrete contracts Concrete as in "all functions in contract are fully defined" --- tests/unit/core/test_contract_declaration.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/unit/core/test_contract_declaration.py b/tests/unit/core/test_contract_declaration.py index 776082935..59024f87b 100644 --- a/tests/unit/core/test_contract_declaration.py +++ b/tests/unit/core/test_contract_declaration.py @@ -27,6 +27,25 @@ def test_abstract_contract(solc_binary_path) -> None: assert not slither.contracts[0].is_fully_implemented +def test_concrete_contract(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.0") + slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "abstract.sol").as_posix(), solc=solc_path) + assert slither.contracts[0].is_fully_implemented + + solc_path = solc_binary_path("0.5.0") + slither = Slither( + Path(CONTRACT_DECL_TEST_ROOT, "implicit_abstract.sol").as_posix(), solc=solc_path + ) + assert slither.contracts[0].is_fully_implemented + + slither = Slither( + Path(CONTRACT_DECL_TEST_ROOT, "implicit_abstract.sol").as_posix(), + solc_force_legacy_json=True, + solc=solc_path, + ) + assert slither.contracts[0].is_fully_implemented + + def test_private_variable(solc_binary_path) -> None: solc_path = solc_binary_path("0.8.15") slither = Slither( From 0a19a5536f3b1abefe493f35e7e367590da1a387 Mon Sep 17 00:00:00 2001 From: DarrenChangJR <48514988+DarrenChangJR@users.noreply.github.com> Date: Wed, 19 Apr 2023 22:06:42 +0800 Subject: [PATCH 082/220] Create concrete.sol --- .../core/test_data/contract_declaration/concrete.sol | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 tests/unit/core/test_data/contract_declaration/concrete.sol diff --git a/tests/unit/core/test_data/contract_declaration/concrete.sol b/tests/unit/core/test_data/contract_declaration/concrete.sol new file mode 100644 index 000000000..80a181f66 --- /dev/null +++ b/tests/unit/core/test_data/contract_declaration/concrete.sol @@ -0,0 +1,9 @@ +pragma solidity ^0.8.0; + +contract SimpleStorage { + uint256 public value; + + function setValue(uint256 newValue) public { + value = newValue; + } +} From 94a499983b913d9f40460f02c5e600ad0463b2a7 Mon Sep 17 00:00:00 2001 From: DarrenChangJR <48514988+DarrenChangJR@users.noreply.github.com> Date: Wed, 19 Apr 2023 22:14:42 +0800 Subject: [PATCH 083/220] Name contract as Concrete --- tests/unit/core/test_data/contract_declaration/concrete.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/core/test_data/contract_declaration/concrete.sol b/tests/unit/core/test_data/contract_declaration/concrete.sol index 80a181f66..602f50b20 100644 --- a/tests/unit/core/test_data/contract_declaration/concrete.sol +++ b/tests/unit/core/test_data/contract_declaration/concrete.sol @@ -1,6 +1,6 @@ pragma solidity ^0.8.0; -contract SimpleStorage { +contract Concrete { uint256 public value; function setValue(uint256 newValue) public { From 23b13ed692dead349f698b674c801aab528e584e Mon Sep 17 00:00:00 2001 From: DarrenChangJR <48514988+DarrenChangJR@users.noreply.github.com> Date: Wed, 19 Apr 2023 22:29:13 +0800 Subject: [PATCH 084/220] Use concrete contract for testing --- tests/unit/core/test_contract_declaration.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/tests/unit/core/test_contract_declaration.py b/tests/unit/core/test_contract_declaration.py index 59024f87b..6b0a52295 100644 --- a/tests/unit/core/test_contract_declaration.py +++ b/tests/unit/core/test_contract_declaration.py @@ -29,17 +29,11 @@ def test_abstract_contract(solc_binary_path) -> None: def test_concrete_contract(solc_binary_path) -> None: solc_path = solc_binary_path("0.8.0") - slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "abstract.sol").as_posix(), solc=solc_path) - assert slither.contracts[0].is_fully_implemented - - solc_path = solc_binary_path("0.5.0") - slither = Slither( - Path(CONTRACT_DECL_TEST_ROOT, "implicit_abstract.sol").as_posix(), solc=solc_path - ) + slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "concrete.sol").as_posix(), solc=solc_path) assert slither.contracts[0].is_fully_implemented slither = Slither( - Path(CONTRACT_DECL_TEST_ROOT, "implicit_abstract.sol").as_posix(), + Path(CONTRACT_DECL_TEST_ROOT, "concrete.sol").as_posix(), solc_force_legacy_json=True, solc=solc_path, ) From 80c47c370c944ce653c0dd0225ff605b27a24f40 Mon Sep 17 00:00:00 2001 From: webthethird Date: Wed, 19 Apr 2023 10:07:21 -0500 Subject: [PATCH 085/220] Use a more legible inner function with list comprehension outside --- slither/utils/code_generation.py | 47 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/slither/utils/code_generation.py b/slither/utils/code_generation.py index 0699bb262..bb8344d8f 100644 --- a/slither/utils/code_generation.py +++ b/slither/utils/code_generation.py @@ -1,5 +1,5 @@ # Functions for generating Solidity code -from typing import TYPE_CHECKING, Optional, List +from typing import TYPE_CHECKING, Optional from slither.utils.type import ( convert_type_for_solidity_signature_to_string, @@ -118,31 +118,30 @@ def generate_interface_function_signature( Returns None if the function is private or internal, or is a constructor/fallback/receive. """ - def format_params_or_returns(variables: List["LocalVariable"], unroll: bool) -> List[str]: + def format_var(var: "LocalVariable", unroll: bool) -> str: if unroll: - return [ + return ( convert_type_for_solidity_signature_to_string(var.type) .replace("(", "") .replace(")", "") - for var in variables - ] - return [ - convert_type_for_solidity_signature_to_string(var.type) - .replace("(", "") - .replace(")", "") - + f" {var.location}" - if isinstance(var.type, ArrayType) - and isinstance(var.type.type, (UserDefinedType, ElementaryType)) - else f"{str(var.type.type)} memory" - if isinstance(var.type, UserDefinedType) - and isinstance(var.type.type, (Structure, Enum)) - else "address" - if isinstance(var.type, UserDefinedType) and isinstance(var.type.type, Contract) - else f"{var.type} {var.location}" - if var.type.is_dynamic - else str(var.type) - for var in variables - ] + ) + if isinstance(var.type, ArrayType) and isinstance( + var.type.type, (UserDefinedType, ElementaryType) + ): + return ( + convert_type_for_solidity_signature_to_string(var.type) + .replace("(", "") + .replace(")", "") + + f" {var.location}" + ) + if isinstance(var.type, UserDefinedType): + if isinstance(var.type.type, (Structure, Enum)): + return f"{str(var.type.type)} memory" + if isinstance(var.type.type, Contract): + return "address" + if var.type.is_dynamic: + return f"{var.type} {var.location}" + return str(var.type) name, _, _ = func.signature if ( @@ -155,8 +154,8 @@ def generate_interface_function_signature( view = " view" if func.view and not func.pure else "" pure = " pure" if func.pure else "" payable = " payable" if func.payable else "" - returns = format_params_or_returns(func.returns, unroll_structs) - parameters = format_params_or_returns(func.parameters, unroll_structs) + returns = [format_var(ret, unroll_structs) for ret in func.returns] + parameters = [format_var(param, unroll_structs) for param in func.parameters] _interface_signature_str = ( name + "(" + ",".join(parameters) + ") external" + payable + pure + view ) From ae2d16a9bb451b0ba99d4200e98867e5f8b7591f Mon Sep 17 00:00:00 2001 From: DarrenChangJR <48514988+DarrenChangJR@users.noreply.github.com> Date: Wed, 19 Apr 2023 23:38:22 +0800 Subject: [PATCH 086/220] Update tests/unit/core/test_contract_declaration.py Co-authored-by: alpharush <0xalpharush@protonmail.com> --- tests/unit/core/test_contract_declaration.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/core/test_contract_declaration.py b/tests/unit/core/test_contract_declaration.py index 6b0a52295..25809ffa8 100644 --- a/tests/unit/core/test_contract_declaration.py +++ b/tests/unit/core/test_contract_declaration.py @@ -32,6 +32,7 @@ def test_concrete_contract(solc_binary_path) -> None: slither = Slither(Path(CONTRACT_DECL_TEST_ROOT, "concrete.sol").as_posix(), solc=solc_path) assert slither.contracts[0].is_fully_implemented + solc_path = solc_binary_path("0.5.0") slither = Slither( Path(CONTRACT_DECL_TEST_ROOT, "concrete.sol").as_posix(), solc_force_legacy_json=True, From e42c746896bff2e74b9382fc9e55d0f907925db3 Mon Sep 17 00:00:00 2001 From: DarrenChangJR <48514988+DarrenChangJR@users.noreply.github.com> Date: Wed, 19 Apr 2023 23:51:02 +0800 Subject: [PATCH 087/220] Create concrete_old.sol For 0.5.0 pragma testing --- .../test_data/contract_declaration/concrete_old.sol | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 tests/unit/core/test_data/contract_declaration/concrete_old.sol diff --git a/tests/unit/core/test_data/contract_declaration/concrete_old.sol b/tests/unit/core/test_data/contract_declaration/concrete_old.sol new file mode 100644 index 000000000..c291e19af --- /dev/null +++ b/tests/unit/core/test_data/contract_declaration/concrete_old.sol @@ -0,0 +1,13 @@ +pragma solidity ^0.5.0; + +contract ConcreteOld { + uint256 public myNumber; + + constructor(uint256 initialNumber) public { + myNumber = initialNumber; + } + + function setNumber(uint256 newNumber) public { + myNumber = newNumber; + } +} From b60eb9ed57aa89db251df1100cc4d43a2f559321 Mon Sep 17 00:00:00 2001 From: DarrenChangJR <48514988+DarrenChangJR@users.noreply.github.com> Date: Wed, 19 Apr 2023 23:52:03 +0800 Subject: [PATCH 088/220] Run pragma 0.5.0 for the correct (old) contract --- tests/unit/core/test_contract_declaration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/core/test_contract_declaration.py b/tests/unit/core/test_contract_declaration.py index 25809ffa8..28d0fae55 100644 --- a/tests/unit/core/test_contract_declaration.py +++ b/tests/unit/core/test_contract_declaration.py @@ -34,7 +34,7 @@ def test_concrete_contract(solc_binary_path) -> None: solc_path = solc_binary_path("0.5.0") slither = Slither( - Path(CONTRACT_DECL_TEST_ROOT, "concrete.sol").as_posix(), + Path(CONTRACT_DECL_TEST_ROOT, "concrete_old.sol").as_posix(), solc_force_legacy_json=True, solc=solc_path, ) From ef2eadc1c412222f815fee2326b51b17062b3019 Mon Sep 17 00:00:00 2001 From: webthethird Date: Wed, 19 Apr 2023 15:24:42 -0500 Subject: [PATCH 089/220] Update test_upgrades_compare to test cross-contract taint --- .../upgradeability_util/src/ContractV2.sol | 5 + .../upgradeability_util/src/ERC20.sol | 376 ++++++++++++++++++ tests/unit/utils/test_upgradeability_util.py | 20 +- 3 files changed, 399 insertions(+), 2 deletions(-) create mode 100644 tests/unit/utils/test_data/upgradeability_util/src/ERC20.sol diff --git a/tests/unit/utils/test_data/upgradeability_util/src/ContractV2.sol b/tests/unit/utils/test_data/upgradeability_util/src/ContractV2.sol index 9b102f3e9..9c508caf3 100644 --- a/tests/unit/utils/test_data/upgradeability_util/src/ContractV2.sol +++ b/tests/unit/utils/test_data/upgradeability_util/src/ContractV2.sol @@ -1,6 +1,7 @@ pragma solidity ^0.8.2; import "./ProxyStorage.sol"; +import "./ERC20.sol"; contract ContractV2 is ProxyStorage { uint private stateA = 0; @@ -38,4 +39,8 @@ contract ContractV2 is ProxyStorage { function checkB() internal returns (bool) { return stateB == 32; } + + function erc20Transfer(address erc20, address to, uint256 amount) public returns (bool) { + return ERC20(erc20).transfer(to, amount); + } } diff --git a/tests/unit/utils/test_data/upgradeability_util/src/ERC20.sol b/tests/unit/utils/test_data/upgradeability_util/src/ERC20.sol new file mode 100644 index 000000000..6c7801581 --- /dev/null +++ b/tests/unit/utils/test_data/upgradeability_util/src/ERC20.sol @@ -0,0 +1,376 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) + +pragma solidity ^0.8.0; + +/** + * @dev Implementation of the {IERC20} interface. + * + * This implementation is agnostic to the way tokens are created. This means + * that a supply mechanism has to be added in a derived contract using {_mint}. + * For a generic mechanism see {ERC20PresetMinterPauser}. + * + * TIP: For a detailed writeup see our guide + * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How + * to implement supply mechanisms]. + * + * We have followed general OpenZeppelin Contracts guidelines: functions revert + * instead returning `false` on failure. This behavior is nonetheless + * conventional and does not conflict with the expectations of ERC20 + * applications. + * + * Additionally, an {Approval} event is emitted on calls to {transferFrom}. + * This allows applications to reconstruct the allowance for all accounts just + * by listening to said events. Other implementations of the EIP may not emit + * these events, as it isn't required by the specification. + * + * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} + * functions have been added to mitigate the well-known issues around setting + * allowances. See {IERC20-approve}. + */ +contract ERC20 { + mapping(address => uint256) private _balances; + + mapping(address => mapping(address => uint256)) private _allowances; + + uint256 private _totalSupply; + + string private _name; + string private _symbol; + + /** + * @dev Sets the values for {name} and {symbol}. + * + * The default value of {decimals} is 18. To select a different value for + * {decimals} you should overload it. + * + * All two of these values are immutable: they can only be set once during + * construction. + */ + constructor(string memory name_, string memory symbol_) { + _name = name_; + _symbol = symbol_; + } + + /** + * @dev Returns the name of the token. + */ + function name() public view virtual returns (string memory) { + return _name; + } + + /** + * @dev Returns the symbol of the token, usually a shorter version of the + * name. + */ + function symbol() public view virtual returns (string memory) { + return _symbol; + } + + /** + * @dev Returns the number of decimals used to get its user representation. + * For example, if `decimals` equals `2`, a balance of `505` tokens should + * be displayed to a user as `5.05` (`505 / 10 ** 2`). + * + * Tokens usually opt for a value of 18, imitating the relationship between + * Ether and Wei. This is the value {ERC20} uses, unless this function is + * overridden; + * + * NOTE: This information is only used for _display_ purposes: it in + * no way affects any of the arithmetic of the contract, including + * {IERC20-balanceOf} and {IERC20-transfer}. + */ + function decimals() public view virtual returns (uint8) { + return 18; + } + + /** + * @dev See {IERC20-totalSupply}. + */ + function totalSupply() public view virtual returns (uint256) { + return _totalSupply; + } + + /** + * @dev See {IERC20-balanceOf}. + */ + function balanceOf(address account) public view virtual returns (uint256) { + return _balances[account]; + } + + /** + * @dev See {IERC20-transfer}. + * + * Requirements: + * + * - `to` cannot be the zero address. + * - the caller must have a balance of at least `amount`. + */ + function transfer(address to, uint256 amount) public virtual returns (bool) { + address owner = msg.sender; + _transfer(owner, to, amount); + return true; + } + + /** + * @dev See {IERC20-allowance}. + */ + function allowance(address owner, address spender) public view virtual returns (uint256) { + return _allowances[owner][spender]; + } + + /** + * @dev See {IERC20-approve}. + * + * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on + * `transferFrom`. This is semantically equivalent to an infinite approval. + * + * Requirements: + * + * - `spender` cannot be the zero address. + */ + function approve(address spender, uint256 amount) public virtual returns (bool) { + address owner = msg.sender; + _approve(owner, spender, amount); + return true; + } + + /** + * @dev See {IERC20-transferFrom}. + * + * Emits an {Approval} event indicating the updated allowance. This is not + * required by the EIP. See the note at the beginning of {ERC20}. + * + * NOTE: Does not update the allowance if the current allowance + * is the maximum `uint256`. + * + * Requirements: + * + * - `from` and `to` cannot be the zero address. + * - `from` must have a balance of at least `amount`. + * - the caller must have allowance for ``from``'s tokens of at least + * `amount`. + */ + function transferFrom( + address from, + address to, + uint256 amount + ) public virtual returns (bool) { + address spender = msg.sender; + _spendAllowance(from, spender, amount); + _transfer(from, to, amount); + return true; + } + + /** + * @dev Atomically increases the allowance granted to `spender` by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - `spender` cannot be the zero address. + */ + function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { + address owner = msg.sender; + _approve(owner, spender, allowance(owner, spender) + addedValue); + return true; + } + + /** + * @dev Atomically decreases the allowance granted to `spender` by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - `spender` cannot be the zero address. + * - `spender` must have allowance for the caller of at least + * `subtractedValue`. + */ + function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { + address owner = msg.sender; + uint256 currentAllowance = allowance(owner, spender); + require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); + unchecked { + _approve(owner, spender, currentAllowance - subtractedValue); + } + + return true; + } + + /** + * @dev Moves `amount` of tokens from `from` to `to`. + * + * This internal function is equivalent to {transfer}, and can be used to + * e.g. implement automatic token fees, slashing mechanisms, etc. + * + * Emits a {Transfer} event. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `from` must have a balance of at least `amount`. + */ + function _transfer( + address from, + address to, + uint256 amount + ) internal virtual { + require(from != address(0), "ERC20: transfer from the zero address"); + require(to != address(0), "ERC20: transfer to the zero address"); + + _beforeTokenTransfer(from, to, amount); + + uint256 fromBalance = _balances[from]; + require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); + unchecked { + _balances[from] = fromBalance - amount; + // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by + // decrementing then incrementing. + _balances[to] += amount; + } + _afterTokenTransfer(from, to, amount); + } + + /** @dev Creates `amount` tokens and assigns them to `account`, increasing + * the total supply. + * + * Emits a {Transfer} event with `from` set to the zero address. + * + * Requirements: + * + * - `account` cannot be the zero address. + */ + function _mint(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: mint to the zero address"); + + _beforeTokenTransfer(address(0), account, amount); + + _totalSupply += amount; + unchecked { + // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. + _balances[account] += amount; + } + _afterTokenTransfer(address(0), account, amount); + } + + /** + * @dev Destroys `amount` tokens from `account`, reducing the + * total supply. + * + * Emits a {Transfer} event with `to` set to the zero address. + * + * Requirements: + * + * - `account` cannot be the zero address. + * - `account` must have at least `amount` tokens. + */ + function _burn(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: burn from the zero address"); + + _beforeTokenTransfer(account, address(0), amount); + + uint256 accountBalance = _balances[account]; + require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); + unchecked { + _balances[account] = accountBalance - amount; + // Overflow not possible: amount <= accountBalance <= totalSupply. + _totalSupply -= amount; + } + _afterTokenTransfer(account, address(0), amount); + } + + /** + * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. + * + * This internal function is equivalent to `approve`, and can be used to + * e.g. set automatic allowances for certain subsystems, etc. + * + * Emits an {Approval} event. + * + * Requirements: + * + * - `owner` cannot be the zero address. + * - `spender` cannot be the zero address. + */ + function _approve( + address owner, + address spender, + uint256 amount + ) internal virtual { + require(owner != address(0), "ERC20: approve from the zero address"); + require(spender != address(0), "ERC20: approve to the zero address"); + + _allowances[owner][spender] = amount; + } + + /** + * @dev Updates `owner` s allowance for `spender` based on spent `amount`. + * + * Does not update the allowance amount in case of infinite allowance. + * Revert if not enough allowance is available. + * + * Might emit an {Approval} event. + */ + function _spendAllowance( + address owner, + address spender, + uint256 amount + ) internal virtual { + uint256 currentAllowance = allowance(owner, spender); + if (currentAllowance != type(uint256).max) { + require(currentAllowance >= amount, "ERC20: insufficient allowance"); + unchecked { + _approve(owner, spender, currentAllowance - amount); + } + } + } + + /** + * @dev Hook that is called before any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens + * will be transferred to `to`. + * - when `from` is zero, `amount` tokens will be minted for `to`. + * - when `to` is zero, `amount` of ``from``'s tokens will be burned. + * - `from` and `to` are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _beforeTokenTransfer( + address from, + address to, + uint256 amount + ) internal virtual {} + + /** + * @dev Hook that is called after any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens + * has been transferred to `to`. + * - when `from` is zero, `amount` tokens have been minted for `to`. + * - when `to` is zero, `amount` of ``from``'s tokens have been burned. + * - `from` and `to` are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _afterTokenTransfer( + address from, + address to, + uint256 amount + ) internal virtual {} +} diff --git a/tests/unit/utils/test_upgradeability_util.py b/tests/unit/utils/test_upgradeability_util.py index 7a2931d52..e367a3eed 100644 --- a/tests/unit/utils/test_upgradeability_util.py +++ b/tests/unit/utils/test_upgradeability_util.py @@ -31,16 +31,32 @@ def test_upgrades_compare() -> None: tainted_funcs, tainted_contracts, ) = compare(v1, v2) - assert len(missing_vars) == len(tainted_contracts) == 0 + assert len(missing_vars) == 0 assert new_vars == [v2.get_state_variable_from_name("stateC")] assert tainted_vars == [ v2.get_state_variable_from_name("bug"), ] - assert new_funcs == [v2.get_function_from_signature("i()")] + assert new_funcs == [ + v2.get_function_from_signature("i()"), + v2.get_function_from_signature("erc20Transfer(address,address,uint256)"), + ] assert modified_funcs == [v2.get_function_from_signature("checkB()")] assert tainted_funcs == [ v2.get_function_from_signature("h()"), ] + erc20 = sl.get_contract_from_name("ERC20")[0] + assert len(tainted_contracts) == 1 + assert tainted_contracts[0].contract == erc20 + assert set(tainted_contracts[0].tainted_functions) == { + erc20.get_function_from_signature("transfer(address,uint256)"), + erc20.get_function_from_signature("_transfer(address,address,uint256)"), + erc20.get_function_from_signature("_burn(address,uint256)"), + erc20.get_function_from_signature("balanceOf(address)"), + erc20.get_function_from_signature("_mint(address,uint256)"), + } + assert tainted_contracts[0].tainted_variables == [ + erc20.get_state_variable_from_name("_balances") + ] def test_upgrades_implementation_var() -> None: From d15cc6ad142513e6c09eca58ee3361fb9b69b602 Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 21 Apr 2023 15:05:58 +0200 Subject: [PATCH 090/220] Fix custom errors type hint --- slither/core/compilation_unit.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/slither/core/compilation_unit.py b/slither/core/compilation_unit.py index 4550ea894..6d24786eb 100644 --- a/slither/core/compilation_unit.py +++ b/slither/core/compilation_unit.py @@ -13,7 +13,7 @@ from slither.core.declarations import ( Function, Modifier, ) -from slither.core.declarations.custom_error import CustomError +from slither.core.declarations.custom_error_top_level import CustomErrorTopLevel from slither.core.declarations.enum_top_level import EnumTopLevel from slither.core.declarations.function_top_level import FunctionTopLevel from slither.core.declarations.structure_top_level import StructureTopLevel @@ -46,7 +46,7 @@ class SlitherCompilationUnit(Context): self._using_for_top_level: List[UsingForTopLevel] = [] self._pragma_directives: List[Pragma] = [] self._import_directives: List[Import] = [] - self._custom_errors: List[CustomError] = [] + self._custom_errors: List[CustomErrorTopLevel] = [] self._user_defined_value_types: Dict[str, TypeAliasTopLevel] = {} self._all_functions: Set[Function] = set() @@ -216,7 +216,7 @@ class SlitherCompilationUnit(Context): return self._using_for_top_level @property - def custom_errors(self) -> List[CustomError]: + def custom_errors(self) -> List[CustomErrorTopLevel]: return self._custom_errors @property From 637b8e2a9d1ea417d44b31c9ea55c1228f5a6bf1 Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 21 Apr 2023 15:07:04 +0200 Subject: [PATCH 091/220] Expose the custom error --- slither/core/declarations/solidity_variables.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/slither/core/declarations/solidity_variables.py b/slither/core/declarations/solidity_variables.py index f0e903d7b..552cf9e7f 100644 --- a/slither/core/declarations/solidity_variables.py +++ b/slither/core/declarations/solidity_variables.py @@ -201,6 +201,10 @@ class SolidityCustomRevert(SolidityFunction): self._custom_error = custom_error self._return_type: List[Union[TypeInformation, ElementaryType]] = [] + @property + def custom_error(self) -> CustomError: + return self._custom_error + def __eq__(self, other: Any) -> bool: return ( self.__class__ == other.__class__ From 718e51160b19f63e207e01a54e2c79a8fd3f5d74 Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 21 Apr 2023 15:13:09 +0200 Subject: [PATCH 092/220] Improve handling of top level usages --- slither/tools/flattening/flattening.py | 43 +++++++++++++++----------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/slither/tools/flattening/flattening.py b/slither/tools/flattening/flattening.py index 67b3c00a3..7603f5e93 100644 --- a/slither/tools/flattening/flattening.py +++ b/slither/tools/flattening/flattening.py @@ -11,6 +11,7 @@ from slither.core.declarations import SolidityFunction, EnumContract, StructureC from slither.core.declarations.contract import Contract from slither.core.declarations.function_top_level import FunctionTopLevel from slither.core.declarations.top_level import TopLevel +from slither.core.declarations.solidity_variables import SolidityCustomRevert from slither.core.solidity_types import MappingType, ArrayType from slither.core.solidity_types.type import Type from slither.core.solidity_types.user_defined_type import UserDefinedType @@ -24,6 +25,7 @@ from slither.tools.flattening.export.export import ( ) logger = logging.getLogger("Slither-flattening") +logger.setLevel(logging.INFO) # index: where to start # patch_type: @@ -75,6 +77,7 @@ class Flattening: self._get_source_code_top_level(compilation_unit.structures_top_level) self._get_source_code_top_level(compilation_unit.enums_top_level) + self._get_source_code_top_level(compilation_unit.custom_errors) self._get_source_code_top_level(compilation_unit.variables_top_level) self._get_source_code_top_level(compilation_unit.functions_top_level) @@ -249,12 +252,14 @@ class Flattening: t: Type, contract: Contract, exported: Set[str], - list_contract: List[Contract], - list_top_level: List[TopLevel], + list_contract: Set[Contract], + list_top_level: Set[TopLevel], ): if isinstance(t, UserDefinedType): t_type = t.type - if isinstance(t_type, (EnumContract, StructureContract)): + if isinstance(t_type, TopLevel): + list_top_level.add(t_type) + elif isinstance(t_type, (EnumContract, StructureContract)): if t_type.contract != contract and t_type.contract not in exported: self._export_list_used_contracts( t_type.contract, exported, list_contract, list_top_level @@ -275,8 +280,8 @@ class Flattening: self, contract: Contract, exported: Set[str], - list_contract: List[Contract], - list_top_level: List[TopLevel], + list_contract: Set[Contract], + list_top_level: Set[TopLevel], ): # TODO: investigate why this happen if not isinstance(contract, Contract): @@ -332,19 +337,21 @@ class Flattening: for read in ir.read: if isinstance(read, TopLevel): - if read not in list_top_level: - list_top_level.append(read) - if isinstance(ir, InternalCall): - function_called = ir.function - if isinstance(function_called, FunctionTopLevel): - list_top_level.append(function_called) - - if contract not in list_contract: - list_contract.append(contract) + list_top_level.add(read) + if isinstance(ir, InternalCall) and isinstance(ir.function, FunctionTopLevel): + list_top_level.add(ir.function) + if ( + isinstance(ir, SolidityCall) + and isinstance(ir.function, SolidityCustomRevert) + and isinstance(ir.function.custom_error, TopLevel) + ): + list_top_level.add(ir.function.custom_error) + + list_contract.add(contract) def _export_contract_with_inheritance(self, contract) -> Export: - list_contracts: List[Contract] = [] # will contain contract itself - list_top_level: List[TopLevel] = [] + list_contracts: Set[Contract] = set() # will contain contract itself + list_top_level: Set[TopLevel] = set() self._export_list_used_contracts(contract, set(), list_contracts, list_top_level) path = Path(self._export_path, f"{contract.name}_{uuid.uuid4()}.sol") @@ -401,8 +408,8 @@ class Flattening: def _export_with_import(self) -> List[Export]: exports: List[Export] = [] for contract in self._compilation_unit.contracts: - list_contracts: List[Contract] = [] # will contain contract itself - list_top_level: List[TopLevel] = [] + list_contracts: Set[Contract] = set() # will contain contract itself + list_top_level: Set[TopLevel] = set() self._export_list_used_contracts(contract, set(), list_contracts, list_top_level) if list_top_level: From b76eb8cfab1145630d42c654415ca792abe015cf Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Thu, 20 Apr 2023 16:07:23 -0400 Subject: [PATCH 093/220] add bug-revealing tests for issue #1846 --- tests/unit/slithir/test_ssa_generation.py | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/unit/slithir/test_ssa_generation.py b/tests/unit/slithir/test_ssa_generation.py index 4e26aa54d..cf351e59b 100644 --- a/tests/unit/slithir/test_ssa_generation.py +++ b/tests/unit/slithir/test_ssa_generation.py @@ -1048,3 +1048,41 @@ def test_issue_1748(slither_from_source): operations = f.slithir_operations assign_op = operations[0] assert isinstance(assign_op, InitArray) + + +def test_issue_1846_ternary_in_if(): + source = """ + contract Contract { + function foo(uint x) public returns (uint y) { + if (x > 0) { + y = x > 1 ? 2 : 3; + } else { + y = 4; + } + } + } + """ + with slither_from_source(source) as slither: + c = slither.get_contract_from_name("Contract")[0] + f = c.functions[0] + node = f.nodes[1] + assert node.type == NodeType.IF + assert node.son_true.type == NodeType.IF + assert node.son_false.type == NodeType.EXPRESSION + + +def test_issue_1846_ternary_in_ternary(): + source = """ + contract Contract { + function foo(uint x) public returns (uint y) { + y = x > 0 ? x > 1 ? 2 : 3 : 4; + } + } + """ + with slither_from_source(source) as slither: + c = slither.get_contract_from_name("Contract")[0] + f = c.functions[0] + node = f.nodes[1] + assert node.type == NodeType.IF + assert node.son_true.type == NodeType.IF + assert node.son_false.type == NodeType.EXPRESSION From 3056a9e2d07b9d4d228b0d0fc4def20fd1883260 Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Thu, 20 Apr 2023 16:07:51 -0400 Subject: [PATCH 094/220] fix #1846 --- slither/core/cfg/node.py | 15 +++++++++++++++ slither/solc_parsing/declarations/function.py | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/slither/core/cfg/node.py b/slither/core/cfg/node.py index 5138e796a..2a48bd235 100644 --- a/slither/core/cfg/node.py +++ b/slither/core/cfg/node.py @@ -620,6 +620,21 @@ class Node(SourceMapping): # pylint: disable=too-many-public-methods """ self._sons.append(son) + def replace_son(self, ori_son: "Node", new_son: "Node") -> None: + """Replace a son node. Do nothing if the node to replace is not a son + + Args: + ori_son: son to replace + new_son: son to replace with + """ + for i, s in enumerate(self._sons): + if s.node_id == ori_son.node_id: + idx = i + break + else: + return + self._sons[idx] = new_son + def set_sons(self, sons: List["Node"]) -> None: """Set the son nodes diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index 7438a7bb0..fa165ea66 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -1396,7 +1396,7 @@ class FunctionSolc(CallerContextExpression): endif_node = self._new_node(NodeType.ENDIF, node.source_mapping, node.scope) for father in node.fathers: - father.remove_son(node) + father.replace_son(node, condition_node.underlying_node) father.add_son(condition_node.underlying_node) condition_node.underlying_node.add_father(father) From c873427d2a624461e9fe67d8c2c4c0201cb3b10b Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Thu, 20 Apr 2023 16:30:32 -0400 Subject: [PATCH 095/220] remove redundant code --- slither/solc_parsing/declarations/function.py | 1 - 1 file changed, 1 deletion(-) diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index fa165ea66..def68a8a3 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -1397,7 +1397,6 @@ class FunctionSolc(CallerContextExpression): for father in node.fathers: father.replace_son(node, condition_node.underlying_node) - father.add_son(condition_node.underlying_node) condition_node.underlying_node.add_father(father) for son in node.sons: From 3a4cdbde0a0687d79ab6772b493b68c9fe01c5c3 Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Fri, 21 Apr 2023 13:46:59 -0400 Subject: [PATCH 096/220] fix broken test --- tests/unit/slithir/test_ssa_generation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/slithir/test_ssa_generation.py b/tests/unit/slithir/test_ssa_generation.py index cf351e59b..62218e41a 100644 --- a/tests/unit/slithir/test_ssa_generation.py +++ b/tests/unit/slithir/test_ssa_generation.py @@ -1050,7 +1050,7 @@ def test_issue_1748(slither_from_source): assert isinstance(assign_op, InitArray) -def test_issue_1846_ternary_in_if(): +def test_issue_1846_ternary_in_if(slither_from_source): source = """ contract Contract { function foo(uint x) public returns (uint y) { @@ -1071,7 +1071,7 @@ def test_issue_1846_ternary_in_if(): assert node.son_false.type == NodeType.EXPRESSION -def test_issue_1846_ternary_in_ternary(): +def test_issue_1846_ternary_in_ternary(slither_from_source): source = """ contract Contract { function foo(uint x) public returns (uint y) { From 7a2fc5cd9132eac8035aeaec9c6fe6d3958b196a Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Fri, 17 Mar 2023 18:24:47 -0500 Subject: [PATCH 097/220] remove new array depth and parse length upfront --- slither/core/expressions/new_array.py | 25 ++++++----------- slither/slithir/convert.py | 2 +- slither/slithir/operations/init_array.py | 2 +- slither/slithir/operations/new_array.py | 18 +++++-------- .../slithir/tmp_operations/tmp_new_array.py | 8 +----- slither/slithir/utils/ssa.py | 3 +-- .../expressions/expression_parsing.py | 27 ++++--------------- .../visitors/expression/expression_printer.py | 3 +-- .../visitors/slithir/expression_to_slithir.py | 2 +- tests/unit/slithir/test_ssa_generation.py | 19 +++++++++++++ 10 files changed, 45 insertions(+), 64 deletions(-) diff --git a/slither/core/expressions/new_array.py b/slither/core/expressions/new_array.py index 162b48f1e..08ccf24c0 100644 --- a/slither/core/expressions/new_array.py +++ b/slither/core/expressions/new_array.py @@ -2,31 +2,22 @@ from typing import Union, TYPE_CHECKING from slither.core.expressions.expression import Expression -from slither.core.solidity_types.type import Type if TYPE_CHECKING: - from slither.core.solidity_types.elementary_type import ElementaryType - from slither.core.solidity_types.type_alias import TypeAliasTopLevel + from slither.core.solidity_types.array_type import ArrayType class NewArray(Expression): - - # note: dont conserve the size of the array if provided - def __init__( - self, depth: int, array_type: Union["TypeAliasTopLevel", "ElementaryType"] - ) -> None: + def __init__(self, array_type: "ArrayType") -> None: super().__init__() - assert isinstance(array_type, Type) - self._depth: int = depth - self._array_type: Type = array_type + from slither.core.solidity_types.array_type import ArrayType - @property - def array_type(self) -> Type: - return self._array_type + assert isinstance(array_type, ArrayType) + self._array_type = array_type @property - def depth(self) -> int: - return self._depth + def array_type(self) -> "ArrayType": + return self._array_type def __str__(self): - return "new " + str(self._array_type) + "[]" * self._depth + return "new " + str(self._array_type) diff --git a/slither/slithir/convert.py b/slither/slithir/convert.py index 3cfddf5e6..3161addd7 100644 --- a/slither/slithir/convert.py +++ b/slither/slithir/convert.py @@ -1077,7 +1077,7 @@ def extract_tmp_call(ins: TmpCall, contract: Optional[Contract]) -> Union[Call, return op if isinstance(ins.ori, TmpNewArray): - n = NewArray(ins.ori.depth, ins.ori.array_type, ins.lvalue) + n = NewArray(ins.ori.array_type, ins.lvalue) n.set_expression(ins.expression) return n diff --git a/slither/slithir/operations/init_array.py b/slither/slithir/operations/init_array.py index 4f6b2f9fa..e0754c770 100644 --- a/slither/slithir/operations/init_array.py +++ b/slither/slithir/operations/init_array.py @@ -41,7 +41,7 @@ class InitArray(OperationWithLValue): def convert(elem): if isinstance(elem, (list,)): return str([convert(x) for x in elem]) - return str(elem) + return f"{elem}({elem.type})" init_values = convert(self.init_values) return f"{self.lvalue}({self.lvalue.type}) = {init_values}" diff --git a/slither/slithir/operations/new_array.py b/slither/slithir/operations/new_array.py index 8dad8532f..b023a04a5 100644 --- a/slither/slithir/operations/new_array.py +++ b/slither/slithir/operations/new_array.py @@ -4,7 +4,7 @@ from slither.slithir.operations.call import Call from slither.core.solidity_types.type import Type if TYPE_CHECKING: - from slither.core.solidity_types.type_alias import TypeAliasTopLevel + from slither.core.solidity_types.type_alias import ArrayType from slither.slithir.variables.constant import Constant from slither.slithir.variables.temporary import TemporaryVariable from slither.slithir.variables.temporary_ssa import TemporaryVariableSSA @@ -13,29 +13,25 @@ if TYPE_CHECKING: class NewArray(Call, OperationWithLValue): def __init__( self, - depth: int, - array_type: "TypeAliasTopLevel", + array_type: "ArrayType", lvalue: Union["TemporaryVariableSSA", "TemporaryVariable"], ) -> None: super().__init__() - assert isinstance(array_type, Type) - self._depth = depth + from slither.core.solidity_types.array_type import ArrayType + + assert isinstance(array_type, ArrayType) self._array_type = array_type self._lvalue = lvalue @property - def array_type(self) -> "TypeAliasTopLevel": + def array_type(self) -> "ArrayType": return self._array_type @property def read(self) -> List["Constant"]: return self._unroll(self.arguments) - @property - def depth(self) -> int: - return self._depth - def __str__(self): args = [str(a) for a in self.arguments] - return f"{self.lvalue} = new {self.array_type}{'[]' * self.depth}({','.join(args)})" + return f"{self.lvalue} = new {self.array_type}({','.join(args)})" diff --git a/slither/slithir/tmp_operations/tmp_new_array.py b/slither/slithir/tmp_operations/tmp_new_array.py index efbdb6242..04acb4b9e 100644 --- a/slither/slithir/tmp_operations/tmp_new_array.py +++ b/slither/slithir/tmp_operations/tmp_new_array.py @@ -6,13 +6,11 @@ from slither.slithir.variables.temporary import TemporaryVariable class TmpNewArray(OperationWithLValue): def __init__( self, - depth: int, array_type: Type, lvalue: TemporaryVariable, ) -> None: super().__init__() assert isinstance(array_type, Type) - self._depth = depth self._array_type = array_type self._lvalue = lvalue @@ -24,9 +22,5 @@ class TmpNewArray(OperationWithLValue): def read(self): return [] - @property - def depth(self) -> int: - return self._depth - def __str__(self): - return f"{self.lvalue} = new {self.array_type}{'[]' * self._depth}" + return f"{self.lvalue} = new {self.array_type}" diff --git a/slither/slithir/utils/ssa.py b/slither/slithir/utils/ssa.py index 9a180d14f..4c958798b 100644 --- a/slither/slithir/utils/ssa.py +++ b/slither/slithir/utils/ssa.py @@ -789,10 +789,9 @@ def copy_ir(ir: Operation, *instances) -> Operation: variable_right = get_variable(ir, lambda x: x.variable_right, *instances) return Member(variable_left, variable_right, lvalue) if isinstance(ir, NewArray): - depth = ir.depth array_type = ir.array_type lvalue = get_variable(ir, lambda x: x.lvalue, *instances) - new_ir = NewArray(depth, array_type, lvalue) + new_ir = NewArray(array_type, lvalue) new_ir.arguments = get_rec_values(ir, lambda x: x.arguments, *instances) return new_ir if isinstance(ir, NewElementaryType): diff --git a/slither/solc_parsing/expressions/expression_parsing.py b/slither/solc_parsing/expressions/expression_parsing.py index d0dc4c7e0..c74caf94f 100644 --- a/slither/solc_parsing/expressions/expression_parsing.py +++ b/slither/solc_parsing/expressions/expression_parsing.py @@ -560,6 +560,7 @@ def parse_expression(expression: Dict, caller_context: CallerContextExpression) if type_name[caller_context.get_key()] == "ArrayTypeName": depth = 0 + array_type = parse_type(type_name, caller_context) while type_name[caller_context.get_key()] == "ArrayTypeName": # Note: dont conserve the size of the array if provided # We compute it directly @@ -567,29 +568,11 @@ def parse_expression(expression: Dict, caller_context: CallerContextExpression) type_name = type_name["baseType"] else: type_name = type_name["children"][0] + if depth > 0: + # nested array + array_type = ArrayType(parse_type(type_name, caller_context), array_type.length) depth += 1 - if type_name[caller_context.get_key()] == "ElementaryTypeName": - if is_compact_ast: - array_type = ElementaryType(type_name["name"]) - else: - array_type = ElementaryType(type_name["attributes"]["name"]) - elif type_name[caller_context.get_key()] == "UserDefinedTypeName": - if is_compact_ast: - if "name" not in type_name: - name_type = type_name["pathNode"]["name"] - else: - name_type = type_name["name"] - - array_type = parse_type(UnknownType(name_type), caller_context) - else: - array_type = parse_type( - UnknownType(type_name["attributes"]["name"]), caller_context - ) - elif type_name[caller_context.get_key()] == "FunctionTypeName": - array_type = parse_type(type_name, caller_context) - else: - raise ParsingError(f"Incorrect type array {type_name}") - array = NewArray(depth, array_type) + array = NewArray(array_type) array.set_offset(src, caller_context.compilation_unit) return array diff --git a/slither/visitors/expression/expression_printer.py b/slither/visitors/expression/expression_printer.py index 601627c02..61af4f1c9 100644 --- a/slither/visitors/expression/expression_printer.py +++ b/slither/visitors/expression/expression_printer.py @@ -76,8 +76,7 @@ class ExpressionPrinter(ExpressionVisitor): def _post_new_array(self, expression: expressions.NewArray) -> None: array = str(expression.array_type) - depth = expression.depth - val = f"new {array}{'[]' * depth}" + val = f"new {array}" set_val(expression, val) def _post_new_contract(self, expression: expressions.NewContract) -> None: diff --git a/slither/visitors/slithir/expression_to_slithir.py b/slither/visitors/slithir/expression_to_slithir.py index 90905be4e..bb1c62200 100644 --- a/slither/visitors/slithir/expression_to_slithir.py +++ b/slither/visitors/slithir/expression_to_slithir.py @@ -528,7 +528,7 @@ class ExpressionToSlithIR(ExpressionVisitor): def _post_new_array(self, expression: NewArray) -> None: val = TemporaryVariable(self._node) - operation = TmpNewArray(expression.depth, expression.array_type, val) + operation = TmpNewArray(expression.array_type, val) operation.set_expression(expression) self._result.append(operation) set_val(expression, val) diff --git a/tests/unit/slithir/test_ssa_generation.py b/tests/unit/slithir/test_ssa_generation.py index 4e26aa54d..46147f8df 100644 --- a/tests/unit/slithir/test_ssa_generation.py +++ b/tests/unit/slithir/test_ssa_generation.py @@ -34,6 +34,8 @@ from slither.slithir.variables import ( TemporaryVariableSSA, ) +from slither.core.solidity_types import ArrayType + # Directory of currently executing script. Will be used as basis for temporary file names. SCRIPT_DIR = pathlib.Path(getsourcefile(lambda: 0)).parent # type:ignore @@ -1048,3 +1050,20 @@ def test_issue_1748(slither_from_source): operations = f.slithir_operations assign_op = operations[0] assert isinstance(assign_op, InitArray) + + +def test_issue_1776(): + source = """ + contract Contract { + function foo() public returns (uint) { + uint[] memory arr = new uint[](2); + return 0; + } + } + """ + with slither_from_source(source) as slither: + c = slither.get_contract_from_name("Contract")[0] + f = c.functions[0] + operations = f.slithir_operations + assign_op = operations[0] + assert isinstance(assign_op.lvalue.type, ArrayType) From 8f9fe80c14fc9e764529886179ffcad4b5df71b8 Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Mon, 20 Mar 2023 20:27:15 -0400 Subject: [PATCH 098/220] update test to check nested array length --- tests/unit/slithir/test_ssa_generation.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/unit/slithir/test_ssa_generation.py b/tests/unit/slithir/test_ssa_generation.py index 46147f8df..624770740 100644 --- a/tests/unit/slithir/test_ssa_generation.py +++ b/tests/unit/slithir/test_ssa_generation.py @@ -1056,7 +1056,7 @@ def test_issue_1776(): source = """ contract Contract { function foo() public returns (uint) { - uint[] memory arr = new uint[](2); + uint[5][10][] memory arr = new uint[5][10][](2); return 0; } } @@ -1065,5 +1065,13 @@ def test_issue_1776(): c = slither.get_contract_from_name("Contract")[0] f = c.functions[0] operations = f.slithir_operations - assign_op = operations[0] - assert isinstance(assign_op.lvalue.type, ArrayType) + new_op = operations[0] + lvalue = new_op.lvalue + lvalue_type = lvalue.type + assert isinstance(lvalue_type, ArrayType) + lvalue_type1 = lvalue_type.type + assert isinstance(lvalue_type1, ArrayType) + assert lvalue_type1.length_value.value == "10" + lvalue_type2 = lvalue_type1.type + assert isinstance(lvalue_type2, ArrayType) + assert lvalue_type2.length_value.value == "5" From aadee32b95ba522d670e3fc25304c939b827cbfa Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Mon, 20 Mar 2023 20:27:57 -0400 Subject: [PATCH 099/220] Fix incorrect array_type in NewArray --- slither/core/expressions/new_array.py | 3 +-- .../solc_parsing/expressions/expression_parsing.py | 13 +------------ 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/slither/core/expressions/new_array.py b/slither/core/expressions/new_array.py index 08ccf24c0..05d50f168 100644 --- a/slither/core/expressions/new_array.py +++ b/slither/core/expressions/new_array.py @@ -1,5 +1,4 @@ -from typing import Union, TYPE_CHECKING - +from typing import TYPE_CHECKING from slither.core.expressions.expression import Expression diff --git a/slither/solc_parsing/expressions/expression_parsing.py b/slither/solc_parsing/expressions/expression_parsing.py index c74caf94f..945a60b8f 100644 --- a/slither/solc_parsing/expressions/expression_parsing.py +++ b/slither/solc_parsing/expressions/expression_parsing.py @@ -559,19 +559,8 @@ def parse_expression(expression: Dict, caller_context: CallerContextExpression) type_name = children[0] if type_name[caller_context.get_key()] == "ArrayTypeName": - depth = 0 array_type = parse_type(type_name, caller_context) - while type_name[caller_context.get_key()] == "ArrayTypeName": - # Note: dont conserve the size of the array if provided - # We compute it directly - if is_compact_ast: - type_name = type_name["baseType"] - else: - type_name = type_name["children"][0] - if depth > 0: - # nested array - array_type = ArrayType(parse_type(type_name, caller_context), array_type.length) - depth += 1 + assert isinstance(array_type, ArrayType) array = NewArray(array_type) array.set_offset(src, caller_context.compilation_unit) return array From 73f5ad3c93c13477f7141f30cf13ba223529e210 Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Mon, 20 Mar 2023 20:42:29 -0400 Subject: [PATCH 100/220] Fix pylint issues --- slither/core/expressions/new_array.py | 1 + slither/slithir/operations/new_array.py | 8 +++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/slither/core/expressions/new_array.py b/slither/core/expressions/new_array.py index 05d50f168..b1d407793 100644 --- a/slither/core/expressions/new_array.py +++ b/slither/core/expressions/new_array.py @@ -9,6 +9,7 @@ if TYPE_CHECKING: class NewArray(Expression): def __init__(self, array_type: "ArrayType") -> None: super().__init__() + # pylint: disable=import-outside-toplevel from slither.core.solidity_types.array_type import ArrayType assert isinstance(array_type, ArrayType) diff --git a/slither/slithir/operations/new_array.py b/slither/slithir/operations/new_array.py index b023a04a5..2d032ccd8 100644 --- a/slither/slithir/operations/new_array.py +++ b/slither/slithir/operations/new_array.py @@ -1,10 +1,10 @@ from typing import List, Union, TYPE_CHECKING -from slither.slithir.operations.lvalue import OperationWithLValue + +from slither.core.solidity_types.array_type import ArrayType from slither.slithir.operations.call import Call -from slither.core.solidity_types.type import Type +from slither.slithir.operations.lvalue import OperationWithLValue if TYPE_CHECKING: - from slither.core.solidity_types.type_alias import ArrayType from slither.slithir.variables.constant import Constant from slither.slithir.variables.temporary import TemporaryVariable from slither.slithir.variables.temporary_ssa import TemporaryVariableSSA @@ -17,8 +17,6 @@ class NewArray(Call, OperationWithLValue): lvalue: Union["TemporaryVariableSSA", "TemporaryVariable"], ) -> None: super().__init__() - from slither.core.solidity_types.array_type import ArrayType - assert isinstance(array_type, ArrayType) self._array_type = array_type From 063418da60658f8595a058cb972e0d99f795029e Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Sun, 2 Apr 2023 18:25:16 -0400 Subject: [PATCH 101/220] Assert array dynamic or static --- tests/unit/slithir/test_ssa_generation.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/unit/slithir/test_ssa_generation.py b/tests/unit/slithir/test_ssa_generation.py index 624770740..dc5113617 100644 --- a/tests/unit/slithir/test_ssa_generation.py +++ b/tests/unit/slithir/test_ssa_generation.py @@ -1068,10 +1068,13 @@ def test_issue_1776(): new_op = operations[0] lvalue = new_op.lvalue lvalue_type = lvalue.type + assert lvalue_type.is_dynamic assert isinstance(lvalue_type, ArrayType) lvalue_type1 = lvalue_type.type + assert not lvalue_type1.is_dynamic assert isinstance(lvalue_type1, ArrayType) assert lvalue_type1.length_value.value == "10" lvalue_type2 = lvalue_type1.type + assert not lvalue_type2.is_dynamic assert isinstance(lvalue_type2, ArrayType) assert lvalue_type2.length_value.value == "5" From c8e6c4a6a84bc9334e926730710c3441dbf8e496 Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Sun, 2 Apr 2023 18:30:48 -0400 Subject: [PATCH 102/220] Reorder assertions --- tests/unit/slithir/test_ssa_generation.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unit/slithir/test_ssa_generation.py b/tests/unit/slithir/test_ssa_generation.py index dc5113617..7f2f042cb 100644 --- a/tests/unit/slithir/test_ssa_generation.py +++ b/tests/unit/slithir/test_ssa_generation.py @@ -1068,13 +1068,13 @@ def test_issue_1776(): new_op = operations[0] lvalue = new_op.lvalue lvalue_type = lvalue.type - assert lvalue_type.is_dynamic assert isinstance(lvalue_type, ArrayType) + assert lvalue_type.is_dynamic lvalue_type1 = lvalue_type.type - assert not lvalue_type1.is_dynamic assert isinstance(lvalue_type1, ArrayType) + assert not lvalue_type1.is_dynamic assert lvalue_type1.length_value.value == "10" lvalue_type2 = lvalue_type1.type - assert not lvalue_type2.is_dynamic assert isinstance(lvalue_type2, ArrayType) + assert not lvalue_type2.is_dynamic assert lvalue_type2.length_value.value == "5" From 0c803a1265afc7a787dac05355ff1e60df0068ba Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Fri, 21 Apr 2023 13:49:27 -0400 Subject: [PATCH 103/220] fix broken test --- tests/unit/slithir/test_ssa_generation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/slithir/test_ssa_generation.py b/tests/unit/slithir/test_ssa_generation.py index 7f2f042cb..d263d1453 100644 --- a/tests/unit/slithir/test_ssa_generation.py +++ b/tests/unit/slithir/test_ssa_generation.py @@ -1052,7 +1052,7 @@ def test_issue_1748(slither_from_source): assert isinstance(assign_op, InitArray) -def test_issue_1776(): +def test_issue_1776(slither_from_source): source = """ contract Contract { function foo() public returns (uint) { From 1fdb17529b04844ee887e0861fb300e0328dff4e Mon Sep 17 00:00:00 2001 From: William Aaron Cheung Date: Fri, 21 Apr 2023 21:17:40 -0400 Subject: [PATCH 104/220] update ast parsing test artifacts --- .../expected/conditional-all.sol-0.4.0-compact.json | 5 ----- .../test_data/expected/conditional-all.sol-0.4.0-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.1-compact.json | 5 ----- .../test_data/expected/conditional-all.sol-0.4.1-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.10-compact.json | 5 ----- .../expected/conditional-all.sol-0.4.10-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.11-compact.json | 5 ----- .../expected/conditional-all.sol-0.4.11-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.12-compact.json | 2 +- .../expected/conditional-all.sol-0.4.12-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.13-compact.json | 2 +- .../expected/conditional-all.sol-0.4.13-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.14-compact.json | 2 +- .../expected/conditional-all.sol-0.4.14-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.15-compact.json | 2 +- .../expected/conditional-all.sol-0.4.15-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.16-compact.json | 2 +- .../expected/conditional-all.sol-0.4.16-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.17-compact.json | 2 +- .../expected/conditional-all.sol-0.4.17-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.18-compact.json | 2 +- .../expected/conditional-all.sol-0.4.18-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.19-compact.json | 2 +- .../expected/conditional-all.sol-0.4.19-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.2-compact.json | 5 ----- .../test_data/expected/conditional-all.sol-0.4.2-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.20-compact.json | 2 +- .../expected/conditional-all.sol-0.4.20-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.21-compact.json | 2 +- .../expected/conditional-all.sol-0.4.21-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.22-compact.json | 2 +- .../expected/conditional-all.sol-0.4.22-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.23-compact.json | 2 +- .../expected/conditional-all.sol-0.4.23-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.24-compact.json | 2 +- .../expected/conditional-all.sol-0.4.24-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.25-compact.json | 2 +- .../expected/conditional-all.sol-0.4.25-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.26-compact.json | 2 +- .../expected/conditional-all.sol-0.4.26-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.3-compact.json | 5 ----- .../test_data/expected/conditional-all.sol-0.4.3-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.4-compact.json | 5 ----- .../test_data/expected/conditional-all.sol-0.4.4-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.5-compact.json | 5 ----- .../test_data/expected/conditional-all.sol-0.4.5-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.6-compact.json | 5 ----- .../test_data/expected/conditional-all.sol-0.4.6-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.7-compact.json | 5 ----- .../test_data/expected/conditional-all.sol-0.4.7-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.8-compact.json | 5 ----- .../test_data/expected/conditional-all.sol-0.4.8-legacy.json | 2 +- .../expected/conditional-all.sol-0.4.9-compact.json | 5 ----- .../test_data/expected/conditional-all.sol-0.4.9-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.0-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.5.0-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.1-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.5.1-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.10-compact.json | 2 +- .../expected/conditional-all.sol-0.5.10-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.11-compact.json | 2 +- .../expected/conditional-all.sol-0.5.11-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.12-compact.json | 2 +- .../expected/conditional-all.sol-0.5.12-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.13-compact.json | 2 +- .../expected/conditional-all.sol-0.5.13-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.14-compact.json | 2 +- .../expected/conditional-all.sol-0.5.14-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.15-compact.json | 2 +- .../expected/conditional-all.sol-0.5.15-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.16-compact.json | 2 +- .../expected/conditional-all.sol-0.5.16-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.17-compact.json | 2 +- .../expected/conditional-all.sol-0.5.17-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.2-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.5.2-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.3-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.5.3-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.4-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.5.4-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.5-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.5.5-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.6-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.5.6-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.7-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.5.7-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.8-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.5.8-legacy.json | 2 +- .../expected/conditional-all.sol-0.5.9-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.5.9-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.0-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.6.0-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.1-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.6.1-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.10-compact.json | 2 +- .../expected/conditional-all.sol-0.6.10-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.11-compact.json | 2 +- .../expected/conditional-all.sol-0.6.11-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.12-compact.json | 2 +- .../expected/conditional-all.sol-0.6.12-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.2-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.6.2-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.3-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.6.3-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.4-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.6.4-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.5-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.6.5-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.6-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.6.6-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.7-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.6.7-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.8-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.6.8-legacy.json | 2 +- .../expected/conditional-all.sol-0.6.9-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.6.9-legacy.json | 2 +- .../expected/conditional-all.sol-0.7.0-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.7.0-legacy.json | 2 +- .../expected/conditional-all.sol-0.7.1-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.7.1-legacy.json | 2 +- .../expected/conditional-all.sol-0.7.2-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.7.2-legacy.json | 2 +- .../expected/conditional-all.sol-0.7.3-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.7.3-legacy.json | 2 +- .../expected/conditional-all.sol-0.7.4-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.7.4-legacy.json | 2 +- .../expected/conditional-all.sol-0.7.5-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.7.5-legacy.json | 2 +- .../expected/conditional-all.sol-0.7.6-compact.json | 2 +- .../test_data/expected/conditional-all.sol-0.7.6-legacy.json | 2 +- .../expected/conditional-all.sol-0.8.0-compact.json | 2 +- .../expected/conditional-all.sol-0.8.1-compact.json | 2 +- .../expected/conditional-all.sol-0.8.10-compact.json | 2 +- .../expected/conditional-all.sol-0.8.11-compact.json | 2 +- .../expected/conditional-all.sol-0.8.12-compact.json | 2 +- .../expected/conditional-all.sol-0.8.13-compact.json | 2 +- .../expected/conditional-all.sol-0.8.14-compact.json | 2 +- .../expected/conditional-all.sol-0.8.15-compact.json | 2 +- .../expected/conditional-all.sol-0.8.2-compact.json | 2 +- .../expected/conditional-all.sol-0.8.3-compact.json | 2 +- .../expected/conditional-all.sol-0.8.4-compact.json | 2 +- .../expected/conditional-all.sol-0.8.5-compact.json | 2 +- .../expected/conditional-all.sol-0.8.6-compact.json | 2 +- .../expected/conditional-all.sol-0.8.7-compact.json | 2 +- .../expected/conditional-all.sol-0.8.8-compact.json | 2 +- .../expected/conditional-all.sol-0.8.9-compact.json | 2 +- 146 files changed, 134 insertions(+), 194 deletions(-) delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.0-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.1-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.10-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.11-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.2-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.3-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.4-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.5-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.6-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.7-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.8-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.9-compact.json diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.0-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.0-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.0-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.0-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.0-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.0-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.1-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.1-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.1-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.1-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.1-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.1-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.10-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.10-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.10-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.10-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.10-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.10-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.11-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.11-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.11-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.11-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.11-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.11-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.12-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.12-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.12-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.12-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.12-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.12-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.12-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.13-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.13-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.13-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.13-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.13-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.13-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.13-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.13-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.14-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.14-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.14-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.14-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.14-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.14-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.14-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.14-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.15-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.15-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.15-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.15-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.15-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.15-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.15-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.15-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.16-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.16-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.16-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.16-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.16-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.16-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.16-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.16-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.17-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.17-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.17-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.17-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.17-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.17-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.17-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.17-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.18-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.18-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.18-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.18-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.18-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.18-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.18-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.18-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.19-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.19-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.19-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.19-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.19-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.19-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.19-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.19-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.2-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.2-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.2-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.2-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.2-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.2-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.20-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.20-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.20-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.20-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.20-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.20-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.20-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.20-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.21-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.21-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.21-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.21-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.21-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.21-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.21-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.21-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.22-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.22-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.22-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.22-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.22-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.22-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.22-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.22-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.23-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.23-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.23-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.23-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.23-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.23-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.23-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.23-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.24-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.24-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.24-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.24-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.24-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.24-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.24-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.24-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.25-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.25-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.25-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.25-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.25-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.25-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.25-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.25-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.26-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.26-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.26-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.26-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.26-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.26-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.26-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.26-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.3-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.3-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.3-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.3-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.3-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.3-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.4-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.4-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.4-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.4-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.4-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.4-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.5-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.5-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.5-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.5-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.5-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.5-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.6-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.6-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.6-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.6-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.6-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.6-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.7-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.7-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.7-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.7-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.7-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.7-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.7-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.8-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.8-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.8-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.8-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.8-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.8-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.9-compact.json deleted file mode 100644 index 6ef3d40e7..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.9-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.9-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.9-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.9-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.4.9-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.0-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.0-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.0-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.0-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.0-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.0-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.1-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.1-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.1-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.1-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.1-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.1-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.10-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.10-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.10-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.10-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.10-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.10-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.10-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.11-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.11-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.11-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.11-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.11-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.11-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.11-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.12-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.12-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.12-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.12-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.12-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.12-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.12-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.13-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.13-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.13-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.13-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.13-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.13-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.13-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.13-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.14-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.14-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.14-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.14-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.14-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.14-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.14-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.14-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.15-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.15-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.15-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.15-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.15-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.15-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.15-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.15-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.16-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.16-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.16-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.16-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.16-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.16-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.16-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.16-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.17-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.17-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.17-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.17-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.17-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.17-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.17-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.17-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.2-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.2-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.2-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.2-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.2-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.2-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.3-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.3-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.3-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.3-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.3-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.3-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.4-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.4-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.4-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.4-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.4-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.4-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.5-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.5-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.5-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.5-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.5-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.5-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.6-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.6-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.6-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.6-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.6-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.6-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.7-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.7-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.7-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.7-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.7-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.7-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.7-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.7-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.8-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.8-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.8-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.8-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.8-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.8-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.8-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.9-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.9-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.9-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.9-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.9-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.9-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.5.9-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.0-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.0-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.0-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.0-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.0-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.0-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.1-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.1-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.1-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.1-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.1-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.1-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.10-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.10-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.10-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.10-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.10-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.10-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.10-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.11-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.11-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.11-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.11-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.11-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.11-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.11-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.12-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.12-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.12-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.12-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.12-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.12-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.12-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.2-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.2-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.2-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.2-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.2-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.2-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.3-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.3-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.3-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.3-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.3-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.3-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.4-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.4-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.4-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.4-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.4-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.4-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.5-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.5-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.5-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.5-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.5-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.5-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.6-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.6-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.6-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.6-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.6-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.6-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.7-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.7-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.7-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.7-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.7-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.7-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.7-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.7-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.8-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.8-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.8-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.8-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.8-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.8-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.8-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.9-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.9-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.9-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.9-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.9-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.9-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.6.9-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.0-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.0-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.0-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.0-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.0-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.0-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.1-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.1-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.1-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.1-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.1-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.1-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.2-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.2-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.2-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.2-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.2-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.2-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.3-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.3-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.3-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.3-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.3-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.3-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.4-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.4-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.4-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.4-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.4-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.4-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.5-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.5-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.5-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.5-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.5-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.5-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.6-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.6-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.6-legacy.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.6-legacy.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.6-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.7.6-legacy.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.0-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.0-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.1-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.1-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.10-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.10-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.10-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.11-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.11-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.11-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.12-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.12-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.12-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.13-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.13-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.13-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.13-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.14-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.14-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.14-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.14-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.15-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.15-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.15-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.15-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.2-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.2-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.3-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.3-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.4-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.4-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.5-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.5-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.6-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.6-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.7-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.7-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.7-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.7-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.8-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.8-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.8-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.9-compact.json index 6ef3d40e7..01b7d5fb7 100644 --- a/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.9-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/conditional-all.sol-0.8.9-compact.json @@ -1,5 +1,5 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->16[label=\"True\"];\n14->26[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->6;\n6[label=\"Node Type: IF 6\n\"];\n6->7[label=\"True\"];\n6->8[label=\"False\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->9;\n8[label=\"Node Type: EXPRESSION 8\n\"];\n8->9;\n9[label=\"Node Type: END_IF 9\n\"];\n9->10;\n10[label=\"Node Type: IF 10\n\"];\n10->11[label=\"True\"];\n10->12[label=\"False\"];\n11[label=\"Node Type: EXPRESSION 11\n\"];\n11->13;\n12[label=\"Node Type: EXPRESSION 12\n\"];\n12->13;\n13[label=\"Node Type: END_IF 13\n\"];\n13->14;\n14[label=\"Node Type: IF 14\n\"];\n14->26[label=\"True\"];\n14->16[label=\"False\"];\n16[label=\"Node Type: EXPRESSION 16\n\"];\n16->17;\n17[label=\"Node Type: END_IF 17\n\"];\n17->18;\n18[label=\"Node Type: IF 18\n\"];\n18->19[label=\"True\"];\n18->20[label=\"False\"];\n19[label=\"Node Type: EXPRESSION 19\n\"];\n19->21;\n20[label=\"Node Type: EXPRESSION 20\n\"];\n20->21;\n21[label=\"Node Type: END_IF 21\n\"];\n21->22;\n22[label=\"Node Type: IF 22\n\"];\n22->23[label=\"True\"];\n22->24[label=\"False\"];\n23[label=\"Node Type: EXPRESSION 23\n\"];\n23->25;\n24[label=\"Node Type: EXPRESSION 24\n\"];\n24->25;\n25[label=\"Node Type: END_IF 25\n\"];\n26[label=\"Node Type: IF 26\n\"];\n26->27[label=\"True\"];\n26->28[label=\"False\"];\n27[label=\"Node Type: EXPRESSION 27\n\"];\n27->29;\n28[label=\"Node Type: EXPRESSION 28\n\"];\n28->29;\n29[label=\"Node Type: END_IF 29\n\"];\n29->17;\n}\n" } } \ No newline at end of file From 0dde4cc1f848672dfef8bf8c72dea684c8f8a720 Mon Sep 17 00:00:00 2001 From: Simone Date: Sat, 22 Apr 2023 17:25:32 +0200 Subject: [PATCH 105/220] Fix abi.decode with a UserDefinedType fixed array --- .../visitors/slithir/expression_to_slithir.py | 6 +++++- tests/e2e/solc_parsing/test_ast_parsing.py | 1 + ...bi-decode-fixed-array.sol-0.8.10-compact.zip | Bin 0 -> 4857 bytes ...bi-decode-fixed-array.sol-0.8.11-compact.zip | Bin 0 -> 4875 bytes ...bi-decode-fixed-array.sol-0.8.12-compact.zip | Bin 0 -> 4870 bytes ...bi-decode-fixed-array.sol-0.8.13-compact.zip | Bin 0 -> 4870 bytes ...bi-decode-fixed-array.sol-0.8.14-compact.zip | Bin 0 -> 4862 bytes ...bi-decode-fixed-array.sol-0.8.15-compact.zip | Bin 0 -> 4868 bytes ...abi-decode-fixed-array.sol-0.8.8-compact.zip | Bin 0 -> 4856 bytes ...i-decode-fixed-array.sol-0.8.10-compact.json | 7 +++++++ ...i-decode-fixed-array.sol-0.8.11-compact.json | 7 +++++++ ...i-decode-fixed-array.sol-0.8.12-compact.json | 7 +++++++ ...i-decode-fixed-array.sol-0.8.13-compact.json | 7 +++++++ ...i-decode-fixed-array.sol-0.8.14-compact.json | 7 +++++++ ...i-decode-fixed-array.sol-0.8.15-compact.json | 7 +++++++ ...bi-decode-fixed-array.sol-0.8.8-compact.json | 7 +++++++ .../abi-decode-fixed-array.sol | 16 ++++++++++++++++ 17 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.10-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.11-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.12-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.13-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.14-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.15-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.8-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.10-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.11-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.12-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.13-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.14-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.15-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.8-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/user_defined_value_type/abi-decode-fixed-array.sol diff --git a/slither/visitors/slithir/expression_to_slithir.py b/slither/visitors/slithir/expression_to_slithir.py index 90905be4e..d55dfb589 100644 --- a/slither/visitors/slithir/expression_to_slithir.py +++ b/slither/visitors/slithir/expression_to_slithir.py @@ -10,6 +10,7 @@ from slither.core.declarations import ( Contract, EnumContract, EnumTopLevel, + Enum, ) from slither.core.expressions import ( AssignmentOperation, @@ -405,10 +406,13 @@ class ExpressionToSlithIR(ExpressionVisitor): right = get(expression.expression_right) operation: Operation # Left can be a type for abi.decode(var, uint[2]) - if isinstance(left, Type): + if isinstance(left, (Type, Contract, Enum)): # Nested type are not yet supported by abi.decode, so the assumption # Is that the right variable must be a constant assert isinstance(right, Constant) + # Case for abi.decode(var, I[2]) where I is an interface/contract or an enum + if isinstance(left, (Contract, Enum)): + left = UserDefinedType(left) t = ArrayType(left, int(right.value)) set_val(expression, t) return diff --git a/tests/e2e/solc_parsing/test_ast_parsing.py b/tests/e2e/solc_parsing/test_ast_parsing.py index 78aa8a291..790f947cc 100644 --- a/tests/e2e/solc_parsing/test_ast_parsing.py +++ b/tests/e2e/solc_parsing/test_ast_parsing.py @@ -428,6 +428,7 @@ ALL_TESTS = [ Test("user_defined_value_type/in_parenthesis-0.8.8.sol", ["0.8.8"] + make_version(8, 10, 15)), Test("user_defined_value_type/top-level-0.8.8.sol", ["0.8.8"] + make_version(8, 10, 15)), Test("user_defined_value_type/using-for-0.8.8.sol", ["0.8.8"] + make_version(8, 10, 15)), + Test("user_defined_value_type/abi-decode-fixed-array.sol", ["0.8.8"] + make_version(8, 10, 15)), Test("bytes_call.sol", ["0.8.12"]), Test("modifier_identifier_path.sol", VERSIONS_08), Test("free_functions/libraries_from_free.sol", ["0.8.12"]), diff --git a/tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.10-compact.zip b/tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.10-compact.zip new file mode 100644 index 0000000000000000000000000000000000000000..b65e511efb24373d3157a32071cdb114e9b73141 GIT binary patch literal 4857 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 G0Q^7kpfbe( literal 0 HcmV?d00001 diff --git a/tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.11-compact.zip b/tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.11-compact.zip new file mode 100644 index 0000000000000000000000000000000000000000..c9a78fceafc83990aa8d7df96d3f808a8e85035e GIT binary patch literal 4875 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 YgDO2uJpBK@u>Moa|7`Yu$O{1YAIe@ZKmY&$ literal 0 HcmV?d00001 diff --git a/tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.12-compact.zip b/tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.12-compact.zip new file mode 100644 index 0000000000000000000000000000000000000000..1b69e8e3d5d10acd501881ea862de234b4eb0006 GIT binary patch literal 4870 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 K{C|`S0QevDwlub~brpV*2Eq8cv@WhGF=9 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 VxOo44Vg098|Je`!u`U4Me*mviO`QM$ literal 0 HcmV?d00001 diff --git a/tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.8-compact.zip b/tests/e2e/solc_parsing/test_data/compile/user_defined_value_type/abi-decode-fixed-array.sol-0.8.8-compact.zip new file mode 100644 index 0000000000000000000000000000000000000000..d574a7cb8486ac0764de875611abf38c434d2514 GIT binary patch literal 4856 zcmb7|RX`IAz_rKd4q+fQI;BgbTj}nWj%|$Y?jEV2j*>13DJdy|(H#N;qm&q>2>8F> zfB#*4=UkktbN5_5`dZjH3IHI04Dd8L-&A}6(fNW30I+od00aR5fPlYj#p?hq{K3-z*d4uV19es&J<*KY0s&VnAkPzWIoF2Du=hynoQl9F7-?!|mc z=BCHEy1urWp zRu}wy-a!a@QA0lQUZu_X^;j$P@-a>_kYk!zc11yg_x3Y2tLe*$>4btWL~`esyNAoQ zb<$0i-aSDFtH#9C1P9h~gUE>TX+?-BXhUE31huBKZJ9D-;vVdFfhx$o5>-B|3APY1q1kw#W(2I?xKMr3dn4Yej34F1xEeB{qLVF^&?s7qR=+ ztiFA|${AZS%-Z5uTqLT7|)&4=p#j6KB%jZ$c@<}OcHDGGg_xUhTS_E-`n zOv8wG@Wbd7iql0hjiEo*_bdvO$rWc9wSSx>wkmsq1u1Hctt+2P7vM2l#}Y~122t|M zbysBsps%}DuMm~gJN(11HodLd(o~jx*Kxi{IY<%MXh-JOyO53Vtwve5a&nEtN` z(*Cm(%u9X+nsYx+9P!SA%S3z$+Qh`B~m@Ml+<0TXM0=q%2%|8F)6@y~tPgmB(bBV0G5|TEbZw@-roFh9#)n0C7*Q&BkJ4p z6CrP3bYm%7VP}aXt&^vVowvPF=#N$Z%2hX}5vQ<9Lie`s(n^NkA%{&>ww9*K7 zKT`a8alYa)Ar^^kxL&cBM8osSU~~I?w52ywhaaO8GcgbzKQN}gI#yN+jjCi-xAm`5N6d1uET51!YsrPk8kcW zM)@{7St4npt3$i%D-bkWGCUafV~?~B72wT5rC6qlS7op9xQ8H<6`pSV)26U+lS};; z67VkG&{lwM`MW|SBewPF$9_C6>HCfbd7*>}e`p)O2m_fZhRS+@hGm^Q=U!88BTn6` z!Q;h81)ZTRE6K{~tHnO!oWJ;8n+lvuy**6*L)=cy$=jNwkw;_qfd%mgN`n3->3!yu(%Ipjh9`&@4VtBwLCW18{deFHdf=qKGD~? zGOK)3m57u=8bE#Y{-wQs*?jksLr??zQ^%2xT}~5^>av@Z=fQQV`<*Q`>zktckF_@H zE8Yk^%^w7y+zJ`lI!*U6W?X@05zwDE#tb&RpCZgac2CD)jU;>J%t^oUd6#_wrMhv9%ad2pW?@#uOD>C~wxEQ;U1HNb@L zWNB31dTelq zlQPmPSK+eSdwMTbrtmk#G}08B7X@2_O+0$7g-mo>Jie657npV=ENf@pi0#aVlt!EYBn~w zCgz#^E8V;@r~j0@a*5}%D42D4R87>sYTOysjO!sx5!?l+8 z%HPEUV1kWgf<(Te{iIKc_WV$eRS1}T4ZdO9HT1s2-C6?_H5?Z-LU8d&$1Zm!StC-GTW(`yURR@8J%VeJy( z6E%Z)LuNTA`6_oS-|5D|;w!_pz%D@c>4o2Z-JG=`E5T#^zRwd?$B*+Rt~SsTN=gesDnwf39h_vvr0ie-CoCKMGPym_kvZ$}_`^epsST6GvHq86#8toY9p!9! zvO18Nj9Sa0?rt&ww8(@gobTE26nLx?tnZQh={;VfCfbLbzb$p;KZ>z{g>xYGo|=G{ ziSPe3}8E%s(#|6Lhb7VZXeUw`9 zmLEH8+08?_3mGus7wc`IDxS90+jV}UX(aXJVkKT-Sfw*+*r`z%fJzp#vs-@ka=o); ztDJI7jMZB^Yb&@*z%}AdRz58f^Dq6wd{ZKN8EX{JVKG)r2!Nluw9Z#>39fI|Y>?)t ze28leA@nIG<=8Y{KdRl1Ez=0T@1oR*WYV3eHp%!UlS=sWA5Ej|Oo%hBQK zYU2-sW7P@8S5}5j-mtuj8-=Z+VceF{g~_oax`l|o_#et|GF$`W9ONafw5hddCZgR= zptoK_fMxU~iRhY=VpG7+;ne8g@d%TC9DCi-T{U}--L!_q3i51yT??fi3^929Sort& zoCO{1{E69ldTd^C2zi)Q6&!&qVZBx4@n0vIdXS5c-6C6@opv$sf9n~Y%t#NPlPX$n z*sPq}>_k{3(HDHA6GpjkPu)n8`^C!h$@H*4XDOMTcAW2mU=(&ve=}xE|EwxpJ%dYD z87iXyq8d}tZNT@q1)moS{}4Uu{LcHlIy7PZ|N9H5FG;l*A0XQjkISeY&*~Ip1*L!mt6i=_D`zG z$t*`ldc-SGC?^(%tV*1YxiKaGBNA;(Xr8z@)bIHoID{)twdPl-a9XxGR^x^0>Q7c-pt|6R%|okR_F#9SP48nfy2@GSYM z=Y@D}Ks3bAndnsEslZ?OO2aiQw2&L(^U$<{hJib;cl>Q)w;=yvIzo@ET z&C0y{k)0fzoxO?TpG7&2BgA%~kgU5`od`5D!iv`4K8ud$K5Gd~w$D8bO<^~8HTVLN z4}!fTUtAlwUMi@d8uS1*9)5OHx5~d}SPqLH1`*;LWOyxKz92iuSfibpGxK5b9%`bC z{;_wjx{{Gc6wpc&`B+Rb5;N!BM3XV)(~RBvhDBB0Z{-OQ*X~bs^E6w1V6un7LqtKi zR^-x6L8*U=5H7r_Ku-LtPA3P^!u|`ZcA~ezwLxx-M@i4}Mh*@h5y=>3YR%A>S0WOV zbl5CG^m;X3M}bUA=e%F$ri-vMV?9(?nw_6L-cil;wpERid^aEX$_6&Bhkf#El|7tH z-csKj_%&uTq2b9WdNJCwFqpBIU-HS2n84^0g||2HD01-Yi!bpn1l5GCX>z2sHg$@U zpNBCijohqj01dY-x#C&CEd~l!7p8HV{@oNkgM|VVjNK~{THjKR>qj_}P|U~+X3giE zU{F5r@qJ0|jR{MEck`h#iXq3)aqtN{X9R-E>KeuK&Q7hlnttl^Glb0UT_X;5u>?C= z=SSNm{9gS1bv83CXsYzzodJ!v(Ll4&you4ajt@u^JWNO1+GZX4P>cMz*G-$Y0#Z=u zPk8&c_ZFhd#AKp4%S2aco@1D`Et9D2c#4ynFSkFESfBFcoo^zl_33kDZojvsjj3CF zJa$UdX9I$$ilt9m$?Hy)C(>LFD-DOn7!4+1dRL~z#c}lLdTWQ43jP?6_-QSw5u(W2 z$&zeWM)^*LpO73Ks@<O4udV|_iPtyX>~WQZ6iT$cT~R6e_9RkpC@`GbEuR^PAy8PlUlhthh3W5*U2(Fy~~ z-b+@AHB{S7ei^ofm(ieL%`G)yN&ni<4JT*WNl?5xmSzP40WJw;l1jWzv2fFj(xDis zaM3}s=5(ObwtEp7p4oidGsdzc)_O8gGbc&+7Duk@p$|k@clFBs+UZ|FY~-@y*U*3o z*NeHDs-Gv{xBt!B*cj_;VF4Ae|921dpNjhbiNgAy`M+5yeJxzP|9N5kSL^>a;Xl6x G0Q^6wYe&HV literal 0 HcmV?d00001 diff --git a/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.10-compact.json new file mode 100644 index 000000000..070b687bd --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.10-compact.json @@ -0,0 +1,7 @@ +{ + "I": {}, + "C": { + "test_decode_interface_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n", + "test_decode_enum_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.11-compact.json new file mode 100644 index 000000000..070b687bd --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.11-compact.json @@ -0,0 +1,7 @@ +{ + "I": {}, + "C": { + "test_decode_interface_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n", + "test_decode_enum_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.12-compact.json new file mode 100644 index 000000000..070b687bd --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.12-compact.json @@ -0,0 +1,7 @@ +{ + "I": {}, + "C": { + "test_decode_interface_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n", + "test_decode_enum_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.13-compact.json b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.13-compact.json new file mode 100644 index 000000000..070b687bd --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.13-compact.json @@ -0,0 +1,7 @@ +{ + "I": {}, + "C": { + "test_decode_interface_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n", + "test_decode_enum_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.14-compact.json b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.14-compact.json new file mode 100644 index 000000000..070b687bd --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.14-compact.json @@ -0,0 +1,7 @@ +{ + "I": {}, + "C": { + "test_decode_interface_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n", + "test_decode_enum_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.15-compact.json b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.15-compact.json new file mode 100644 index 000000000..070b687bd --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.15-compact.json @@ -0,0 +1,7 @@ +{ + "I": {}, + "C": { + "test_decode_interface_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n", + "test_decode_enum_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.8-compact.json new file mode 100644 index 000000000..070b687bd --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/user_defined_value_type/abi-decode-fixed-array.sol-0.8.8-compact.json @@ -0,0 +1,7 @@ +{ + "I": {}, + "C": { + "test_decode_interface_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n", + "test_decode_enum_array(bytes)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/user_defined_value_type/abi-decode-fixed-array.sol b/tests/e2e/solc_parsing/test_data/user_defined_value_type/abi-decode-fixed-array.sol new file mode 100644 index 000000000..14a59b5a2 --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/user_defined_value_type/abi-decode-fixed-array.sol @@ -0,0 +1,16 @@ +interface I {} +enum A {a,b} + +contract C { + I[6] interfaceArray; + A[6] enumArray; + + function test_decode_interface_array(bytes memory data) public { + interfaceArray = abi.decode(data, (I[6])); + } + + function test_decode_enum_array(bytes memory data) public { + enumArray = abi.decode(data, (A[6])); + } + +} From c08191b1c1c7f7d8bfcfc11274268c0f086a41b4 Mon Sep 17 00:00:00 2001 From: Simone Date: Sat, 22 Apr 2023 17:38:58 +0200 Subject: [PATCH 106/220] Remove assertion --- slither/visitors/slithir/expression_to_slithir.py | 1 - 1 file changed, 1 deletion(-) diff --git a/slither/visitors/slithir/expression_to_slithir.py b/slither/visitors/slithir/expression_to_slithir.py index 90905be4e..741486fb3 100644 --- a/slither/visitors/slithir/expression_to_slithir.py +++ b/slither/visitors/slithir/expression_to_slithir.py @@ -622,7 +622,6 @@ class ExpressionToSlithIR(ExpressionVisitor): set_val(expression, value) elif expression.type in [UnaryOperationType.MINUS_PRE]: lvalue = TemporaryVariable(self._node) - assert isinstance(value.type, ElementaryType) operation = Binary(lvalue, Constant("0", value.type), value, BinaryType.SUBTRACTION) operation.set_expression(expression) self._result.append(operation) From 9d7ebb556de99cc3f2709b15535d5e0e7f141e2c Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 24 Apr 2023 07:54:09 -0500 Subject: [PATCH 107/220] include readme in home page of docs generated by pdoc --- slither/__init__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/slither/__init__.py b/slither/__init__.py index c709b144c..c8c3a9cc9 100644 --- a/slither/__init__.py +++ b/slither/__init__.py @@ -1 +1,5 @@ +""" +.. include:: ../README.md +""" from .slither import Slither + From d8f2b9d868b6662d86a3c98111e1c02c6142030c Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 24 Apr 2023 07:57:52 -0500 Subject: [PATCH 108/220] remove newline --- slither/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/slither/__init__.py b/slither/__init__.py index c8c3a9cc9..dd9b8a1a2 100644 --- a/slither/__init__.py +++ b/slither/__init__.py @@ -2,4 +2,3 @@ .. include:: ../README.md """ from .slither import Slither - From 5afb9355be417f163e7c420d9a7e556a676b1070 Mon Sep 17 00:00:00 2001 From: Simone Date: Mon, 24 Apr 2023 21:13:37 +0200 Subject: [PATCH 109/220] Improve tuple analysis --- .../operations/unused_return_values.py | 42 ++++++++++++------ ...turnValues_0_4_25_unused_return_sol__0.txt | 8 +++- ...turnValues_0_5_16_unused_return_sol__0.txt | 8 +++- ...turnValues_0_6_11_unused_return_sol__0.txt | 8 +++- ...eturnValues_0_7_6_unused_return_sol__0.txt | 8 +++- .../unused-return/0.4.25/unused_return.sol | 8 ++++ .../0.4.25/unused_return.sol-0.4.25.zip | Bin 3212 -> 3637 bytes .../unused-return/0.5.16/unused_return.sol | 8 ++++ .../0.5.16/unused_return.sol-0.5.16.zip | Bin 3223 -> 3651 bytes .../unused-return/0.6.11/unused_return.sol | 8 ++++ .../0.6.11/unused_return.sol-0.6.11.zip | Bin 3116 -> 3540 bytes .../unused-return/0.7.6/unused_return.sol | 8 ++++ .../0.7.6/unused_return.sol-0.7.6.zip | Bin 3039 -> 3465 bytes 13 files changed, 84 insertions(+), 22 deletions(-) diff --git a/slither/detectors/operations/unused_return_values.py b/slither/detectors/operations/unused_return_values.py index 93dda274a..80be98b45 100644 --- a/slither/detectors/operations/unused_return_values.py +++ b/slither/detectors/operations/unused_return_values.py @@ -3,7 +3,7 @@ Module detecting unused return values from external calls """ from typing import List -from slither.core.cfg.node import Node +from slither.core.cfg.node import Node, NodeType from slither.core.declarations import Function from slither.core.declarations.function_contract import FunctionContract from slither.core.variables.state_variable import StateVariable @@ -12,8 +12,8 @@ from slither.detectors.abstract_detector import ( DetectorClassification, DETECTOR_INFO, ) -from slither.slithir.operations import HighLevelCall -from slither.slithir.operations.operation import Operation +from slither.slithir.operations import HighLevelCall, Assignment, Unpack, Operation +from slither.slithir.variables import TupleVariable from slither.utils.output import Output @@ -50,13 +50,18 @@ contract MyConc{ WIKI_RECOMMENDATION = "Ensure that all the return values of the function calls are used." def _is_instance(self, ir: Operation) -> bool: # pylint: disable=no-self-use - return isinstance(ir, HighLevelCall) and ( - ( - isinstance(ir.function, Function) - and ir.function.solidity_signature - not in ["transfer(address,uint256)", "transferFrom(address,address,uint256)"] + return ( + isinstance(ir, HighLevelCall) + and ( + ( + isinstance(ir.function, Function) + and ir.function.solidity_signature + not in ["transfer(address,uint256)", "transferFrom(address,address,uint256)"] + ) + or not isinstance(ir.function, Function) ) - or not isinstance(ir.function, Function) + or ir.node.type == NodeType.TRY + and isinstance(ir, (Assignment, Unpack)) ) def detect_unused_return_values( @@ -71,18 +76,27 @@ contract MyConc{ """ values_returned = [] nodes_origin = {} + # pylint: disable=too-many-nested-blocks for n in f.nodes: for ir in n.irs: if self._is_instance(ir): # if a return value is stored in a state variable, it's ok if ir.lvalue and not isinstance(ir.lvalue, StateVariable): - values_returned.append(ir.lvalue) + values_returned.append((ir.lvalue, None)) nodes_origin[ir.lvalue] = ir + if isinstance(ir.lvalue, TupleVariable): + # we iterate the number of elements the tuple has + # and add a (variable, index) in values_returned for each of them + for index in range(len(ir.lvalue.type)): + values_returned.append((ir.lvalue, index)) for read in ir.read: - if read in values_returned: - values_returned.remove(read) - - return [nodes_origin[value].node for value in values_returned] + remove = (read, ir.index) if isinstance(ir, Unpack) else (read, None) + if remove in values_returned: + # this is needed to remove the tuple variable when the first time one of its element is used + if remove[1] is not None and (remove[0], None) in values_returned: + values_returned.remove((remove[0], None)) + values_returned.remove(remove) + return [nodes_origin[value].node for (value, _) in values_returned] def _detect(self) -> List[Output]: """Detect high level calls which return a value that are never used""" diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_4_25_unused_return_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_4_25_unused_return_sol__0.txt index ec28fa9e5..2d70ddd1c 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_4_25_unused_return_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_4_25_unused_return_sol__0.txt @@ -1,4 +1,8 @@ -User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#18) +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#18-37) ignores return value by t.g() (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#31) -User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#22) +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#18-37) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#19) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#18-37) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#23) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#18-37) ignores return value by (e) = t.g() (tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol#36) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_5_16_unused_return_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_5_16_unused_return_sol__0.txt index 0cf04d283..5a651712e 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_5_16_unused_return_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_5_16_unused_return_sol__0.txt @@ -1,4 +1,8 @@ -User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#18) +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#18-37) ignores return value by (e) = t.g() (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#36) -User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#22) +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#18-37) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#23) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#18-37) ignores return value by t.g() (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#31) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#18-37) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol#19) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_6_11_unused_return_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_6_11_unused_return_sol__0.txt index be0a8c687..5f1d751b7 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_6_11_unused_return_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_6_11_unused_return_sol__0.txt @@ -1,4 +1,8 @@ -User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#22) +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#18-37) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#19) -User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#18) +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#18-37) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#23) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#18-37) ignores return value by t.g() (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#31) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#18-37) ignores return value by (e) = t.g() (tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol#36) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_7_6_unused_return_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_7_6_unused_return_sol__0.txt index ec74a9458..4780c7905 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_7_6_unused_return_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnusedReturnValues_0_7_6_unused_return_sol__0.txt @@ -1,4 +1,8 @@ -User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#17-29) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#22) +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#18-37) ignores return value by t.g() (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#31) -User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#17-29) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#18) +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#18-37) ignores return value by a.add(0) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#23) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#18-37) ignores return value by t.f() (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#19) + +User.test(Target) (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#18-37) ignores return value by (e) = t.g() (tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol#36) diff --git a/tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol b/tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol index d1c189598..ef22b63ae 100644 --- a/tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol +++ b/tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol @@ -8,6 +8,7 @@ library SafeMath{ contract Target{ function f() public returns(uint); + function g() public returns(uint, uint); } contract User{ @@ -26,5 +27,12 @@ contract User{ // As the value returned by the call is stored // (unused local variable should be another issue) uint b = a.add(1); + + t.g(); + + (uint c, uint d) = t.g(); + + // Detected as unused return + (uint e,) = t.g(); } } diff --git a/tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol-0.4.25.zip b/tests/e2e/detectors/test_data/unused-return/0.4.25/unused_return.sol-0.4.25.zip index bfe469a89abf4895a2d531565516f73cb9def65c..8f64587ae63b2629918c62601162154b7f26daf6 100644 GIT binary patch delta 3527 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 F001Tf2>}2A diff --git a/tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol b/tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol index d1c189598..ef22b63ae 100644 --- a/tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol +++ b/tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol @@ -8,6 +8,7 @@ library SafeMath{ contract Target{ function f() public returns(uint); + function g() public returns(uint, uint); } contract User{ @@ -26,5 +27,12 @@ contract User{ // As the value returned by the call is stored // (unused local variable should be another issue) uint b = a.add(1); + + t.g(); + + (uint c, uint d) = t.g(); + + // Detected as unused return + (uint e,) = t.g(); } } diff --git a/tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol-0.5.16.zip b/tests/e2e/detectors/test_data/unused-return/0.5.16/unused_return.sol-0.5.16.zip index 90d77686955906a58c0d3cdc78f60a622bd82581..13d0d7a3237383a7148422b90c85faf13a7ddc0e 100644 GIT binary patch delta 3534 zcmV;<4KebU8N(bHP)h>@KL7#%4gkBRm{#0i?t7OF000wnkr-8f^+P_6+Z$mKi;1jb1=*y27Vz=tPXd?18Wr?*qL{RwzK`Feu6l{SWHaDAIL##UIzEjLe8NwZ`3*Ap<5iw^@?ATUUWeT`5Y z{X_F0d^9)SSxp!*Npl&7GqIh7^fewUeP#R9Gy3G5b*N(d)XSor;ORgFOSE zgboMb7Ol2GucTF60?#6rACD+q3?Q&)8J5ibGHv3s<$EGXNeMNq9hsh5#Y+hqeLa=E zU0QL15KNg{&oWYoNUzqpQuRMWyoPNKkc&iYp4-Wg0+@Gq`xNz zq%nuU>Q&Z%6OTYs?X?PSEg_neQR=xG_>59UQDK!)uWRYSY3Ljelw&6@b8@LK4B6hp zAo5_28c+Wr>vpdiMGT++ggOi!ii5H>LQ% z z?@w!=>8c4j1;Cd(M%S#74ED`e{J(^GtM=o68#1SWvL`_M1TM_0RMdgL>&`XOB%zaF zX^JI?XV%Mz-ZE@93f{(!`ML2Md4lArFPP=G=9KRWWBBDn=)ZP-Rc1#H|3YBIvpox3 zLHsa(B3fHmzrmi*AIF_I}C6A55rvm?(H8on~aDUfwVn(V(>}b_XE@ zNVw@RPCG<{l7HE>H-k0?N_u`V_e3PDDBL*CJ9>xIktM2V>kmACfksnWVqA(m>tA_^tsF3kAX^ecM%IEW<;5R~?89_G|5_wk}4!xNg0XPm3SSDLp@E_Ax$tr^mRgnrEot9Z$ z9M?BD2gK!!NU4Y11qCnNLWxru2e0{TV(T>t(8jNFkju$&3YRgo@C>}+S(zv8l4`3^0NsVGRUKNG_2 zNG?GNVB!}Y|DlC9qITo2yL;R<)c@wnaF2s`>daT;E@SaEa>c^BmMgIiW6d` zs^FsaUr547SUP6ANSC&i);!_JW>st&PWQ3p>ByEy_we>PeyptLl4FC3I#|SX0af#QE45RWk6ke zZL8xiOdQayY#g(M4ey^7uVis8E};wHv@)S%Z}*ARwNW-!Up$C`L)FA)*nv-?A9Mus z#1E~ZL)X=w@Nuh|YDQjQbOnAzK}@Am^ctbAvGa^NmfBXv3w4BlprmKgML9y=_8=XK z^7rG2MERav?~E9{I!#)A+mqj`(V)LX1IeniLhgR#a7pYCnj+bZxmc2kB4@RGD35f; zys$kBTBSr^2nos^kLUYf&hJ?uj?%hguu&*@mVdQO{|tzdK0+tuP< zlivKrWrD_6DA+S{w(Cc?JiRfkARa4)pww%x-^@?)tOoV3wz-tErDAbqlT0KsdWU@K zXnMnHq$7Sy3MPU;{(etl2oy+_x+j+nXQ-H2*>D};+Wm)raSv@VRq`KxMexC>tBq*f zjk;BNX+3d~85-{S<9wcw2 zFqTHMjqowdJEP=2(=fjU1eQCqP+oOQk^O=RFH#m|T)%}Z?1HPCRjDEcrAVK1$1o;3 zel7RGcICW(Y_dccH8|ImvLrzJQ%AI1iwD9sZ47XkbH9-wWQZNWj%XF~uFDVf!x!un z-`phb7t(yT8c0)r8XE07j$O^pOdr=Kzw>+2Flhc_yjR)VN@Y9$G^=ID_nA^%-D7OM zi4zMRcNO>66dB8ja2MwCu7&Nd6*#q9HBj7{%~z6t!3;jVqdI?+e}pTvoq-Km&|Br{ zULDSz$_u@+S7r#0ldoT-^=Uv~E%8o))gWQcSZG)1qSpBsSCwbF+e7(B-=O{6-8Y)hlcM`rLvLL?H;cZrV?hNe?H>=o^QO}NwYBWjK19eOzE*(E)$-BIV&bqBx& zT2TshZ~!{7k0|;jn^QLgSvkqKH)iQnnOozcopsq>!1t>5AGFI8Ng$b(47F66@w)}R z;GecGpfV;siY0`NseA}w`#aw%LDgL$e7*}WtPk`iqgBv6!8=MkGV7#c3jV@DAYtx* zr7LU6qi2^8iPAz#rJV~2ZLA!)xDIc<#`4BaW=nXI<*N~IJxSaF0mi@$%gq)_{K)Z; zvC53;DAP0T8K)anIBZ>e*4q=`*^QA*!5&U%t2 zSD*1gFS-IvW+Jgc??h-KGlE9^?VEdlG;Joc3DT|ri+Z95g#w?}rUA0VE_;~F>8P3j z19j1WpR?pKFr|Hc;oi_zqs`+_TC(ond-mSNQL%g%j2P)2YnNcW&&|_I|9=-!RxB-m zvJB9VbedMC7INU8*E6m(oTAKO;I`>F3!u|d3Xj<|$(A#JPR&>bj#S-3+(oR1~ET{??3sT%) zHTQsYPB}UM2Z4-T_D(?vwL3d#KS|36w&fol-jc6T;yh)j?k@yPnZ#jpILcd3D}gdg z)T|78aQwDE7RTOa4;y_c8qLLjj*Urr`|r4Ji4JGc#B!dy8e;tOU5IHUl55~cpx85{nE#W1JP^xMsC)g2 zxhREg^p*g?ESzYk>hC3rn?^ui7HXidCU{=(3Cvi2)}8!$&!`hp%U-rF0qRX{_HEwT zXQRq2=X5`=XIYr_`3Vs<{v3lsRw zFANAm-AHj1eOfmUXTS&ou(fXd<78g&tp z$mpgm7H8)xCmijXjg`opau5d=N&~kigGR4X)EP@w?hF;AZdWLO@(YM2msn-gdi1Wj zlI+jO64=W$S_RcZc(NzT&hCmT!#2~Kc#;I3)b33^T>!JQ1+0>=*Ot{2gyPusAaN4P zEt0!veTSf=Dm&IfX@(daMcnW}i!wO^RF$e^+8`~L6hdPM4T*>Q23O3rEXOjRq__nA zn>?Wcmj-rBAm4)`_zpS$l!SvDP)h*@KL7#%4gfrjcUG+bzqRWN0025qkr-8f@kbAZrIlV+*LwgE zaqkuAn-IgLtv6q`P z;c`p;2udf(R$JnaI!{Pw;nZ9*?prWzD<{E8V^1=vU0$e|W~Rtr02qc>3(d|!;i&11 zYN}j}7#723smPnNE?UVUrHrcW5?B8^Mjg7v4g>2Ip*6yCsh!g|Lcci3!}Z5na35(om0-|V*J;W{7Vs#Q z%#K4(p4$uOPf;-}Z26g$O@8Oo&HoX3-J+9fBgOO#i|0^r5sQC^i?px zqU%QAZS}SaD_V>s4IPv-C?Iu)3JzV*}009{pPG}{~f0%M8KE_lwm-D7l7jJ)BkkERqFJG`bD>=18#m`>Dx z6neTA2t+Xl*uh+dIyMqV)4geX@!+QM#NEh@bU7mHF#1Ci|1gV^62N(m+RefE?QJVu z^+eD_H9U5x(~HH4&82>2RFRyCo;+Y(ENf<3i(w5RAQ$vR$ssW8i@JB#Z>jxyUU(ZH zW|F?ZQ^UIwQsQlhuZ*0>FL*xCMv@JGxU3lj?A@YgbJFIdo!`HwZ~N@|R(YzmFEwZ6 zMVd1Z8Eq|M0Iu(^FiKc#(wUv|)MQtNWjbZt21T0|8n8GX&VKL z?=8X{yqg$=)8W-aB)kZ>hV^xSG)LWR9J8CAJtIJjBM1CjL7JQeo`$uE*p>HARssO) zp75s{rI(U4CvskEdh^rG=(#_^>maQwZ9!m~5huZ-!zcq@8vW?ni0O^J*ppPdZAw_2 zO((z~dlO%x*bWjil38eznH70rjxW^1jnp?g4ulD^knB8S*Aa6b)T9QxF}J2fk~~>Zq4Z)qfRVsIAGVmRy zyo##G2=JZKVZMd4ltWNavD03nuEcWsuTA5=QrTpB{KIn4=G{NNZZ>|$Dj>Uu({w>A zjb@=wGxFSuPB`6v9)wo#F*xykvE!ok`G3oS7WqO6Ve6PJf>wTiwo9)KmZGy!*N$}j zBmE67p@5OWmBu;E=EE1b%#>^~q>H-wSiZi@89E3#26S2;52|M+H5~BPU)l%4q`5Qx zR1=^WGBeSNye+hw*&!15WO=;3dd!UPZ>q+|u-q8Knj6MEaqm7r`tixa1haF$Fc1H{ zsFTMhZ`zf5eFiRnf7QT*86Zv?Gw+({=nFA3e`s9J>APHz6Gjf>4@DcaIo#kQulCLC z5Z`2a@6j1n7B{cld4PG*yFOL&0xUTpgOU5p0JNyq?;o)vPWon)F1T-z4eZAHLeo6q zYb1voYO0khA5vql!lxd2Vp77LK;?jXwIsHCIY8L)tx)mZ z5Xj_hjd+58IYt4_OQFwL1n7+W)I|K*VR$W*Ca8B&BmDm5yDj%NfvvZ3Lv6F4O!&Up%dWZ#s@t|-zi@uxpPkSH`0NI3z2IEGu|+Lb;O*Qb(kXdQl-x3f7C zAckk~uq#ppNx8y@ht#2fym>5?KNFjnJ_9h?<0b6~hDd%t9fUxJ1wjuypm^}zm5h-F zdTUJTQUfkhQf_}~dv=-7Q=>m*VN=TXQ!urivjoTuqJ1+kwaB6>Plv#N`3>ham%&yn zYIqTU?l?h()I}Rq3=jU#lZd6N9^P?(IUB8_zt&zrNLApeNitfg*uj10Dc9s|6j-DI z6c-=tsD4$JRIi+l7m`qW7TOl^EApc0R)D5P#M4H}-rh-12aWz6tK2HbV@Sj7q+rHt z+20mx5F)DZ0q6#}@|CF?eu_Sga}2Yk;Glnh;&fJuSw!2AAt@V7?L+XY&Cti--?q4j z385)R=@NzkCmoy@1>%EI0eit#7ELdTEsKR_VG=UL^2q)U^Su@q$-> z$`0Wov0tOo0OIG5g=p^^|3120R84PW>u1xdLQW_s-_D!QO6)OYcSdYU3H4+ z`{;5KP)h*k9w?I!^!qB>(^b000000001!0S-I{E(`zw F003#d{7(P? diff --git a/tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol b/tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol index 08d0eb3a5..279ac627e 100644 --- a/tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol +++ b/tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol @@ -8,6 +8,7 @@ library SafeMath{ abstract contract Target{ function f() public virtual returns(uint); + function g() public virtual returns(uint, uint); } contract User{ @@ -26,5 +27,12 @@ contract User{ // As the value returned by the call is stored // (unused local variable should be another issue) uint b = a.add(1); + + t.g(); + + (uint c, uint d) = t.g(); + + // Detected as unused return + (uint e,) = t.g(); } } diff --git a/tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol-0.6.11.zip b/tests/e2e/detectors/test_data/unused-return/0.6.11/unused_return.sol-0.6.11.zip index 5f04b6a004272faa5ec877d604f9918a52156b31..30ae730404a451514b5337af4a27929e64888887 100644 GIT binary patch delta 3429 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 H00000t{9gJ delta 2995 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 pP)h*w0LM;~g$+pt!wUca005Zqy5ax; diff --git a/tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol b/tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol index 08d0eb3a5..279ac627e 100644 --- a/tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol +++ b/tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol @@ -8,6 +8,7 @@ library SafeMath{ abstract contract Target{ function f() public virtual returns(uint); + function g() public virtual returns(uint, uint); } contract User{ @@ -26,5 +27,12 @@ contract User{ // As the value returned by the call is stored // (unused local variable should be another issue) uint b = a.add(1); + + t.g(); + + (uint c, uint d) = t.g(); + + // Detected as unused return + (uint e,) = t.g(); } } diff --git a/tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol-0.7.6.zip b/tests/e2e/detectors/test_data/unused-return/0.7.6/unused_return.sol-0.7.6.zip index ac668ccc923fd53f8f875d8ab49578e6bf687e0a..08ecd82e6a2d57b269fc16e1d584da2977283575 100644 GIT binary patch delta 3353 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 delta 2917 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 POOrYcNd|Tc00000CghU@ From b26f8da1248e7f57119e76f5dc89014cd46272e8 Mon Sep 17 00:00:00 2001 From: Simone Date: Mon, 24 Apr 2023 21:23:08 +0200 Subject: [PATCH 110/220] Improve try-catch parsing --- slither/solc_parsing/declarations/function.py | 76 +++++++++++++++++-- 1 file changed, 70 insertions(+), 6 deletions(-) diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index 7438a7bb0..ab5d289a8 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -660,6 +660,55 @@ class FunctionSolc(CallerContextExpression): link_underlying_nodes(node_condition, node_endDoWhile) return node_endDoWhile + # pylint: disable=no-self-use + def _construct_try_expression(self, externalCall: Dict, parameters_list: Dict) -> Dict: + # if the parameters are more than 1 we make the leftHandSide of the Assignment node + # a TupleExpression otherwise an Identifier + + ret: Dict = {"nodeType": "Assignment", "operator": "=", "src": parameters_list["src"]} + + parameters = parameters_list.get("parameters", None) + + # if the name is "" it means the return variable is not used + if len(parameters) == 1: + if parameters[0]["name"] != "": + ret["typeDescriptions"] = { + "typeString": parameters[0]["typeName"]["typeDescriptions"]["typeString"] + } + leftHandSide = { + "name": parameters[0]["name"], + "nodeType": "Identifier", + "src": parameters[0]["src"], + "typeDescriptions": parameters[0]["typeDescriptions"], + } + else: + # we don't need an Assignment so we return only the external call + return externalCall + else: + ret["typeDescriptions"] = {"typeString": "tuple()"} + leftHandSide = { + "components": [], + "nodeType": "TupleExpression", + "src": parameters_list["src"], + } + + for p in parameters: + if p["name"] == "": + continue + + ident = { + "name": p["name"], + "nodeType": "Identifier", + "src": p["src"], + "typeDescriptions": p["typeDescriptions"], + } + leftHandSide["components"].append(ident) + + ret["leftHandSide"] = leftHandSide + ret["rightHandSide"] = externalCall + + return ret + def _parse_try_catch(self, statement: Dict, node: NodeSolc) -> NodeSolc: externalCall = statement.get("externalCall", None) @@ -669,15 +718,27 @@ class FunctionSolc(CallerContextExpression): node.underlying_node.scope.is_checked, False, node.underlying_node.scope ) new_node = self._new_node(NodeType.TRY, statement["src"], catch_scope) - new_node.add_unparsed_expression(externalCall) + clauses = statement.get("clauses", []) + # the first clause is the try scope + returned_variables = clauses[0].get("parameters", None) + constructed_try_expression = self._construct_try_expression( + externalCall, returned_variables + ) + new_node.add_unparsed_expression(constructed_try_expression) link_underlying_nodes(node, new_node) node = new_node - for clause in statement.get("clauses", []): - self._parse_catch(clause, node) + for index, clause in enumerate(clauses): + # clauses after the first one are related to catch cases + # we set the parameters (e.g. data in this case. catch(string memory data) ...) + # to be initialized so they are not reported by the uninitialized-local-variables detector + if index >= 1: + self._parse_catch(clause, node, True) + else: + self._parse_catch(clause, node, False) return node - def _parse_catch(self, statement: Dict, node: NodeSolc) -> NodeSolc: + def _parse_catch(self, statement: Dict, node: NodeSolc, var_initialized: bool) -> NodeSolc: block = statement.get("block", None) if block is None: @@ -695,7 +756,7 @@ class FunctionSolc(CallerContextExpression): if params: for param in params.get("parameters", []): assert param[self.get_key()] == "VariableDeclaration" - self._add_param(param) + self._add_param(param, var_initialized) return self._parse_statement(block, try_node, try_scope) @@ -1161,7 +1222,7 @@ class FunctionSolc(CallerContextExpression): visited.add(son) self._fix_catch(son, end_node, visited) - def _add_param(self, param: Dict) -> LocalVariableSolc: + def _add_param(self, param: Dict, initialized: bool = False) -> LocalVariableSolc: local_var = LocalVariable() local_var.set_function(self._function) @@ -1171,6 +1232,9 @@ class FunctionSolc(CallerContextExpression): local_var_parser.analyze(self) + if initialized: + local_var.initialized = True + # see https://solidity.readthedocs.io/en/v0.4.24/types.html?highlight=storage%20location#data-location if local_var.location == "default": local_var.set_location("memory") From 34f0e671f552aa398a5ac6b42212959a6f063dfd Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Wed, 26 Apr 2023 15:21:46 -0500 Subject: [PATCH 111/220] update super-linter org --- .github/workflows/black.yml | 2 +- .github/workflows/linter.yml | 2 +- .github/workflows/pylint.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/black.yml b/.github/workflows/black.yml index 1730f4334..df51a3ddf 100644 --- a/.github/workflows/black.yml +++ b/.github/workflows/black.yml @@ -42,7 +42,7 @@ jobs: cp pyproject.toml .github/linters - name: Black - uses: github/super-linter/slim@v4.9.2 + uses: super-linter/super-linter/slim@v4.9.2 if: always() env: # run linter on everything to catch preexisting problems diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index bc9177802..f972cbcd1 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -43,7 +43,7 @@ jobs: cp pyproject.toml .github/linters - name: Lint everything else - uses: github/super-linter/slim@v4.9.2 + uses: super-linter/super-linter/slim@v4.9.2 if: always() env: # run linter on everything to catch preexisting problems diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 06958a10d..983c176a9 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -37,7 +37,7 @@ jobs: cp pyproject.toml .github/linters - name: Pylint - uses: github/super-linter/slim@v4.9.2 + uses: super-linter/super-linter/slim@v4.9.2 if: always() env: # Run linters only on new files for pylint to speed up the CI From d7b0d612c64eefc4bce33cdc4b09c6c740837a94 Mon Sep 17 00:00:00 2001 From: Simone Date: Thu, 27 Apr 2023 10:53:20 +0200 Subject: [PATCH 112/220] Improve handling of multiple return variables --- slither/solc_parsing/declarations/function.py | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index ab5d289a8..7ac67a02d 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -672,6 +672,7 @@ class FunctionSolc(CallerContextExpression): # if the name is "" it means the return variable is not used if len(parameters) == 1: if parameters[0]["name"] != "": + self._add_param(parameters[0]) ret["typeDescriptions"] = { "typeString": parameters[0]["typeName"]["typeDescriptions"]["typeString"] } @@ -692,10 +693,17 @@ class FunctionSolc(CallerContextExpression): "src": parameters_list["src"], } - for p in parameters: + for i, p in enumerate(parameters): if p["name"] == "": continue + new_statement = { + "nodeType": "VariableDefinitionStatement", + "src": p["src"], + "declarations": [p], + } + self._add_param_init_tuple(new_statement, i) + ident = { "name": p["name"], "nodeType": "Identifier", @@ -735,10 +743,11 @@ class FunctionSolc(CallerContextExpression): if index >= 1: self._parse_catch(clause, node, True) else: + # the parameters for the try scope were already added in _construct_try_expression self._parse_catch(clause, node, False) return node - def _parse_catch(self, statement: Dict, node: NodeSolc, var_initialized: bool) -> NodeSolc: + def _parse_catch(self, statement: Dict, node: NodeSolc, add_param: bool) -> NodeSolc: block = statement.get("block", None) if block is None: @@ -748,15 +757,16 @@ class FunctionSolc(CallerContextExpression): try_node = self._new_node(NodeType.CATCH, statement["src"], try_scope) link_underlying_nodes(node, try_node) - if self.is_compact_ast: - params = statement.get("parameters", None) - else: - params = statement[self.get_children("children")] + if add_param: + if self.is_compact_ast: + params = statement.get("parameters", None) + else: + params = statement[self.get_children("children")] - if params: - for param in params.get("parameters", []): - assert param[self.get_key()] == "VariableDeclaration" - self._add_param(param, var_initialized) + if params: + for param in params.get("parameters", []): + assert param[self.get_key()] == "VariableDeclaration" + self._add_param(param, True) return self._parse_statement(block, try_node, try_scope) @@ -1242,6 +1252,17 @@ class FunctionSolc(CallerContextExpression): self._add_local_variable(local_var_parser) return local_var_parser + def _add_param_init_tuple(self, statement: Dict, index: int) -> LocalVariableInitFromTupleSolc: + + local_var = LocalVariableInitFromTuple() + local_var.set_function(self._function) + local_var.set_offset(statement["src"], self._function.compilation_unit) + + local_var_parser = LocalVariableInitFromTupleSolc(local_var, statement, index) + + self._add_local_variable(local_var_parser) + return local_var_parser + def _parse_params(self, params: Dict): assert params[self.get_key()] == "ParameterList" From 50876cf368bca53cada09234ee1096b2991af3d7 Mon Sep 17 00:00:00 2001 From: Simone Date: Thu, 27 Apr 2023 11:13:01 +0200 Subject: [PATCH 113/220] Handle when there aren't return variables --- slither/solc_parsing/declarations/function.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index 7ac67a02d..57d7784e5 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -665,6 +665,11 @@ class FunctionSolc(CallerContextExpression): # if the parameters are more than 1 we make the leftHandSide of the Assignment node # a TupleExpression otherwise an Identifier + # case when there isn't returns(...) + # e.g. external call that doesn't have any return variable + if not parameters_list: + return externalCall + ret: Dict = {"nodeType": "Assignment", "operator": "=", "src": parameters_list["src"]} parameters = parameters_list.get("parameters", None) From 6eb296cdf71ebd48ccab7e24ca99ba89a3b2c171 Mon Sep 17 00:00:00 2001 From: Simone Date: Thu, 27 Apr 2023 11:23:03 +0200 Subject: [PATCH 114/220] Test catch variables not detected as uninitialized --- ...11_uninitialized_local_variable_sol__0.txt | 2 +- ..._6_uninitialized_local_variable_sol__0.txt | 2 +- .../0.6.11/uninitialized_local_variable.sol | 14 +++++++++++++- ...ninitialized_local_variable.sol-0.6.11.zip | Bin 1824 -> 2712 bytes .../0.7.6/uninitialized_local_variable.sol | 14 +++++++++++++- ...uninitialized_local_variable.sol-0.7.6.zip | Bin 1762 -> 2649 bytes 6 files changed, 28 insertions(+), 4 deletions(-) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_6_11_uninitialized_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_6_11_uninitialized_local_variable_sol__0.txt index 8e5dc65e8..7e5fa9559 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_6_11_uninitialized_local_variable_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_6_11_uninitialized_local_variable_sol__0.txt @@ -1,2 +1,2 @@ -Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol#4) is a local variable never initialized +Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol#8) is a local variable never initialized diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_7_6_uninitialized_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_7_6_uninitialized_local_variable_sol__0.txt index 495859ec1..7bf1564d7 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_7_6_uninitialized_local_variable_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_UninitializedLocalVars_0_7_6_uninitialized_local_variable_sol__0.txt @@ -1,2 +1,2 @@ -Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol#4) is a local variable never initialized +Uninitialized.func().uint_not_init (tests/e2e/detectors/test_data/uninitialized-local/0.7.6/uninitialized_local_variable.sol#8) is a local variable never initialized diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol b/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol index d28eef957..00a4fbc86 100644 --- a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol +++ b/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol @@ -1,9 +1,21 @@ +interface I { + function a() external; +} + contract Uninitialized{ function func() external returns(uint){ uint uint_not_init; uint uint_init = 1; return uint_not_init + uint_init; - } + } + + function func_try_catch(I i) external returns(uint) { + try i.a() { + return 1; + } catch (bytes memory data) { + data; + } + } } diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol-0.6.11.zip b/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol-0.6.11.zip index ca7ea0eb308fe7b52d4395dd5171d8bdbf5d44f2..d5b1203065287433605f4fdd799d6e32862f7048 100644 GIT binary patch delta 2557 zcmV@KL7#%4gfV;n^xf(0*uZH003G%kr-ru^+P_6+Z$mK{=)<4#k(GbXB?s{~H=a zs3iZSL1y6a%c)g=c8>~Gzo559b-?F@wye`NK)+y_mW4~=J%l}F&*_)3Aiw|>(5`1O z>!tfUafTu?!!Sn&5*^ygdzy;8H7BLD=W~5~y=n%^pC9f{{R3Z~-k2`0P=BWZarpw# z!zcOOX?_oKPLE`8q-&F=(Jlr8F_nz>CnbC5Gm$7Q_roxMvgz4;#M+XVKe_~?6~*)G z26CcKqL-st$F@hZVKEU8XrU)6Ihxs4zJ|Em2x!1)dSG=3twk5gJai^t9(CeW_8Nt`A$c4AX z!L9X_Ei*B|sO$6_X_rU+nB?ES!a)PZsLAabL*!3?g6Xf4bHyJa?PCv%`vycUDY(-! z(1EBBrk2I@e{v8*{XplTytWpbb+nv)nnL`K@Z17&f>E5R7N2YoDRSeU809V#IR@R_ zic$9uusQfhSOrMN;HFQU%y9@8S^ZHaHu{)hz|;nC&5gnj(QP<)`7X4lnR`ju=`Q4u3K1Wif)?Ka-kMexshf9 zo|cCbj)BxSi}FzHAzbngE*`UQ*x6MFfRh&zUvT1wVpT6}w0J?!pnuv%brbs$4QSx@ z^~sgRB^)CGQS0wj7E<6jL3U9%_&#*$&3}t+=ew3U|Mx&JierJAqw<{7u-apqYiOE( z-zlLtp15QYtvku0Ww6;%&BS!R0g0cX1&(N0+>EW&lgFcjut4xd!L<*l7Qi8fZTD}7 zO4LFUsg=p}vrrLMC`<1sqnZqfKyTH3f_(E}b=Vuk`JAzHWeT6j4A`#x=WsKmf8Lti zE+~@@U?iNQ3|SkM-){^WDb8D$!-`^m+rB2>D%)v~@S=TU@iQ+XT4ML38l;YRYyB}N z)pnN5!ZiU!^+0SdDQCN1J%lG~E@pm7Dj-+2zo874m_9oRJ37@NXB_0~TeQckdaoJH zc%*PI`?>eI2s7IEM*okcu6-1!NPzs=szbpU*%p~M{#_`{1>mHcZ>{N|4YK8bHOQ1r z1*RD(^jtM#+E8cM(giRmH#fmWaA3|fTx=-mvz(p6Hj41(m z`Fi7Z7^f_UwyCVvVrH7Ox@Iw|k%L@9JP36;H@7QAO3o&PSPh9yF{Ri-#hFfUY)dH1 zY{}VdqCLpLl)@)|sWai~nP&TcwrPui#wai}z7PTw;YKt(Eg_k*asE`b&IwI*(N($G zev;cB&FF*F=_F*{g5+Xe2J_;*!0sMGuH=#TZgri!ozdimHsM?<7rHZ`5^Fa2?xnnmj&&?6NQh^fI!`rUiowF`O)^t@ z9yYZrq-T-hXf?Mw)OykA-2M#FH2H8GTY@Dh;EYI#q}{N|(0TW!bu8SFuCUWl<&hZS zmydxk6jM}(^#CP>B1x%#Q@RzR&(W#9i{!N*(|8Bq{^ba1v0hF#^1IZhn%d=V=Jod; z=ysp64{GpWdTGPuNSO!xoKMsvxsE^xm6;pV#-Q!BrmDqoT9epazvXIW9a^rSE6Atly@@SD{>-5@~R6pqnYrya(B1@MoMev(wPxvh3k_Y8&U zq&@x9n#SVrNyCdxof+B2U#Y0&KMNQqjz+oscN+ui{G=dpwtUt8Z*b48By3_d$xkIZIr>QuZDK#F#CvlL{n4{_9kk074aWKdfm%;!{sGY4hBpz&4`t#nn>@OEh6H6 zieA|hM+vh57e_zswlLxG^i!HjJT08L=x-oV*y(#|g^ClBWH}{Zh{^w%gS7NI3?|{` zgpW_Y T2><|EJd?r(SOy>p00000-=q6_ delta 1662 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 I2><{907VzOmjD0& delta 1607 zcmV-N2Dtgz6ygmVP)h>@KL7#%4gfoicUE;nYX2Ap002T9001|}t(aS6;oO)2cgKrt@CvFD zq-twonro_@{&p*CwbB5MY;H;&9AR62-ZWz<@VE4AZ4Qa(U0<$njRn~ymyLt`Xc7Yr zPW;C;9N^_wQV658`?crE5J&a2g{MGF(MSyx_#E^>kW!?o1Q6FJyPm z1ZMR&cXfcTHweG@NUjJ2%n)`xOWk|IzI5u{Tw9D~q22nnKNm9|r>K8&egVk>2h;JI zT2npyo2Ro6mNX&c2+u*bcw2HdQ8*Gnc8rTxPW_eD+U=R%<-2-V?P_(GL(*ZiU5b@4 zEKfrm01iBZ1k}ckgyH)E))5Fjf3^i1Xb> zGXd7wA=Mf~r>fchP|&Nie_Oxw*6f}Z!PwG|R=QQLE9AW1YGWd(g*pr}!&))ti{$^2 zNVy{4J)sTsn%``g+bO$mlb2QibhQLJtY4Pokoor5^_zMQg(H8kM|M}m+^hc_!pxT> zs2R62g)o|hlJ72*sYp?jCpZm`eapu-o+YR7X4;BvQZ6p%JkB7@OIccF!2Q(dAu5jt z#(XDCsqAmuvcbt!8)m%UF)W3R*TQ~eGp#%PInmo?Emw^;q z6t1IH@OQHQ(bK!r8iv=hwVOn`xlWE_V+Z4M)UHEaVdhxRMJCQnMwNsx*9 zw1`WgZ6bfGoBoJpVOBe85ymLKcYYlhzW@UjyR1^-xx%myN*BQ}k~ce3^S9!+B+$yq zH>RUV+MM5VxrBk46l0*)$85C|8u*?FkvO-wBM%vD92uxyuj288k1ofGQ9s#)AYzW! z!T5h-y;74pRnmBp5MN}CX9t2L9j+2Av36@{m4{DkT28j|e}U@R=ERYL{F=ShmxM=> z?ERla+q06O0Po|^-jXFfX(1+A3cgq+8%s8h`E$w`uu}L2(8=at?JGhJ96P{geOTI2 z1P16WkR6sq>smlds2Tz8(lY=1Pr7;IBzu2fe}w24sKLD#@QQq{AVt}o{}H=KZt+9 z+?xVqzK?Ny3vtzTOafoqzCXGI+t**{GDVvmO$07sT-@l;Qv=AdEk@oNbFHhkTrepe z`NCLkxeJrafMpvdBW?lvE50B}1-l^%Nm&p`Ep%&DVa|q(*RM_|u##Crc}ZQv6@)9c zFoVs2zDZa{F^U!c-CK~-P)h* Date: Thu, 27 Apr 2023 14:45:52 +0200 Subject: [PATCH 115/220] Add test --- tests/e2e/solc_parsing/test_ast_parsing.py | 1 + .../negate-unary-element.sol-0.8.16-compact.zip | Bin 0 -> 3106 bytes .../negate-unary-element.sol-0.8.16-compact.json | 5 +++++ .../test_data/negate-unary-element.sol | 5 +++++ 4 files changed, 11 insertions(+) create mode 100644 tests/e2e/solc_parsing/test_data/compile/negate-unary-element.sol-0.8.16-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/expected/negate-unary-element.sol-0.8.16-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/negate-unary-element.sol diff --git a/tests/e2e/solc_parsing/test_ast_parsing.py b/tests/e2e/solc_parsing/test_ast_parsing.py index 78aa8a291..f038e0d0a 100644 --- a/tests/e2e/solc_parsing/test_ast_parsing.py +++ b/tests/e2e/solc_parsing/test_ast_parsing.py @@ -451,6 +451,7 @@ ALL_TESTS = [ Test("yul-top-level-0.8.0.sol", ["0.8.0"]), Test("complex_imports/import_aliases_issue_1319/test.sol", ["0.5.12"]), Test("yul-state-constant-access.sol", ["0.8.16"]), + Test("negate-unary-element.sol", ["0.8.16"]), ] # create the output folder if needed try: diff --git a/tests/e2e/solc_parsing/test_data/compile/negate-unary-element.sol-0.8.16-compact.zip b/tests/e2e/solc_parsing/test_data/compile/negate-unary-element.sol-0.8.16-compact.zip new file mode 100644 index 0000000000000000000000000000000000000000..c18e5091b01d8c4902065e03e68dfeb4563f1b36 GIT binary patch literal 3106 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 literal 0 HcmV?d00001 diff --git a/tests/e2e/solc_parsing/test_data/expected/negate-unary-element.sol-0.8.16-compact.json b/tests/e2e/solc_parsing/test_data/expected/negate-unary-element.sol-0.8.16-compact.json new file mode 100644 index 000000000..8381c16f7 --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/negate-unary-element.sol-0.8.16-compact.json @@ -0,0 +1,5 @@ +{ + "T": { + "a(int256[])": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/negate-unary-element.sol b/tests/e2e/solc_parsing/test_data/negate-unary-element.sol new file mode 100644 index 000000000..b3f03c48d --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/negate-unary-element.sol @@ -0,0 +1,5 @@ +contract T { + function a(int256[] memory data) public returns(int256) { + return -data[0]; + } +} \ No newline at end of file From eaf5cb723d5a26d9645609406adc7caeab42a403 Mon Sep 17 00:00:00 2001 From: Will Fey Date: Sat, 22 Apr 2023 15:34:31 -0600 Subject: [PATCH 116/220] Catch AssertionError and log context and raise again while parsing partial fix of #1853 Opened PR per request in #1854 AssertionError with stack trace can occur while parsing contracts that provides no context to what was parsed that threw the error as described in #1853. This change catches this error, logs additional context, and then throws the error again. An example of the logging from code I am working on: ``` $ slither . ... Compiler run successful ERROR:SlitherSolcParsing: Failed to parse MyERC20Controller.constructor (contracts/MyERC20Controller.sol#19-25): (tokenX,tokenY) = IMyFactoryCallback(msg.sender).tokens() (success,data) = msg.sender.delegatecall(abi.encodeWithSelector(IMyFactoryCallback.newTokens.selector,tokenX,tokenY)) require(bool,string)(success,Factory new tokens failed) _tokens = abi.decode(data,(IMyERC20[6])) Traceback (most recent call last): File "~/slither/slither/__main__.py", line 810, in main_impl ) = process_all(filename, args, detector_classes, printer_classes) File "~/slither/slither/__main__.py", line 101, in process_all ... ``` Logging should make it easier for further issues from users to be easily understood and if necessary included in a bug report. --- slither/solc_parsing/slither_compilation_unit_solc.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/slither/solc_parsing/slither_compilation_unit_solc.py b/slither/solc_parsing/slither_compilation_unit_solc.py index cb94a7d9e..fa38adc0e 100644 --- a/slither/solc_parsing/slither_compilation_unit_solc.py +++ b/slither/solc_parsing/slither_compilation_unit_solc.py @@ -742,6 +742,13 @@ Please rename it, this name is reserved for Slither's internals""" self._underlying_contract_to_parser[contract].log_incorrect_parsing( f"Impossible to generate IR for {contract.name}.{func.name} ({func.source_mapping}):\n {e}" ) + except AssertionError as e: + func_expressions = "\n".join([f'\t{ex}' for ex in func.expressions]) + logger.error( + f"\nFailed to parse {contract.name}.{func.name} ({func.source_mapping}):\n " + f"{func_expressions}") + raise e + contract.convert_expression_to_slithir_ssa() From a4589b07696cc2bcb503dfd87454223caf735ec6 Mon Sep 17 00:00:00 2001 From: Will Fey Date: Thu, 27 Apr 2023 21:30:36 -0600 Subject: [PATCH 117/220] ran black to fix check --- slither/solc_parsing/slither_compilation_unit_solc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/slither/solc_parsing/slither_compilation_unit_solc.py b/slither/solc_parsing/slither_compilation_unit_solc.py index fa38adc0e..aa4f88890 100644 --- a/slither/solc_parsing/slither_compilation_unit_solc.py +++ b/slither/solc_parsing/slither_compilation_unit_solc.py @@ -743,13 +743,13 @@ Please rename it, this name is reserved for Slither's internals""" f"Impossible to generate IR for {contract.name}.{func.name} ({func.source_mapping}):\n {e}" ) except AssertionError as e: - func_expressions = "\n".join([f'\t{ex}' for ex in func.expressions]) + func_expressions = "\n".join([f"\t{ex}" for ex in func.expressions]) logger.error( f"\nFailed to parse {contract.name}.{func.name} ({func.source_mapping}):\n " - f"{func_expressions}") + f"{func_expressions}" + ) raise e - contract.convert_expression_to_slithir_ssa() for func in self._compilation_unit.functions_top_level: From bcf570ebb6a333a5f6bc1b59a53211788264e77d Mon Sep 17 00:00:00 2001 From: devtooligan Date: Tue, 2 May 2023 15:51:04 -0700 Subject: [PATCH 118/220] feat: loc printer --- slither/printers/all_printers.py | 1 + slither/printers/summary/human_summary.py | 79 ++++++-------- slither/printers/summary/loc.py | 127 ++++++++++++++++++++++ slither/utils/myprettytable.py | 39 +++++++ 4 files changed, 201 insertions(+), 45 deletions(-) create mode 100644 slither/printers/summary/loc.py diff --git a/slither/printers/all_printers.py b/slither/printers/all_printers.py index 6dc8dddbd..3dd64da3e 100644 --- a/slither/printers/all_printers.py +++ b/slither/printers/all_printers.py @@ -1,6 +1,7 @@ # pylint: disable=unused-import,relative-beyond-top-level from .summary.function import FunctionSummary from .summary.contract import ContractSummary +from .summary.loc import Loc from .inheritance.inheritance import PrinterInheritance from .inheritance.inheritance_graph import PrinterInheritanceGraph from .call.call_graph import PrinterCallGraph diff --git a/slither/printers/summary/human_summary.py b/slither/printers/summary/human_summary.py index 9eacb97c6..157b8228a 100644 --- a/slither/printers/summary/human_summary.py +++ b/slither/printers/summary/human_summary.py @@ -2,12 +2,12 @@ Module printing summary of the contract """ import logging -from pathlib import Path from typing import Tuple, List, Dict from slither.core.declarations import SolidityFunction, Function from slither.core.variables.state_variable import StateVariable from slither.printers.abstract_printer import AbstractPrinter +from slither.printers.summary.loc import compute_loc_metrics from slither.slithir.operations import ( LowLevelCall, HighLevelCall, @@ -21,7 +21,6 @@ from slither.utils.colors import green, red, yellow from slither.utils.myprettytable import MyPrettyTable from slither.utils.standard_libraries import is_standard_library from slither.core.cfg.node import NodeType -from slither.utils.tests_pattern import is_test_file class PrinterHumanSummary(AbstractPrinter): @@ -32,7 +31,6 @@ class PrinterHumanSummary(AbstractPrinter): @staticmethod def _get_summary_erc20(contract): - functions_name = [f.name for f in contract.functions] state_variables = [v.name for v in contract.state_variables] @@ -165,27 +163,6 @@ class PrinterHumanSummary(AbstractPrinter): def _number_functions(contract): return len(contract.functions) - def _lines_number(self): - if not self.slither.source_code: - return None - total_dep_lines = 0 - total_lines = 0 - total_tests_lines = 0 - - for filename, source_code in self.slither.source_code.items(): - lines = len(source_code.splitlines()) - is_dep = False - if self.slither.crytic_compile: - is_dep = self.slither.crytic_compile.is_dependency(filename) - if is_dep: - total_dep_lines += lines - else: - if is_test_file(Path(filename)): - total_tests_lines += lines - else: - total_lines += lines - return total_lines, total_dep_lines, total_tests_lines - def _get_number_of_assembly_lines(self): total_asm_lines = 0 for contract in self.contracts: @@ -226,7 +203,6 @@ class PrinterHumanSummary(AbstractPrinter): return list(set(ercs)) def _get_features(self, contract): # pylint: disable=too-many-branches - has_payable = False can_send_eth = False can_selfdestruct = False @@ -291,6 +267,36 @@ class PrinterHumanSummary(AbstractPrinter): "Proxy": contract.is_upgradeable_proxy, } + def _get_contracts(self, txt): + ( + number_contracts, + number_contracts_deps, + number_contracts_tests, + ) = self._number_contracts() + txt += f"Total number of contracts in source files: {number_contracts}\n" + if number_contracts_deps > 0: + txt += f"Number of contracts in dependencies: {number_contracts_deps}\n" + if number_contracts_tests > 0: + txt += f"Number of contracts in tests : {number_contracts_tests}\n" + return txt + + def _get_number_lines(self, txt, results): + lines_dict = compute_loc_metrics(self.slither) + txt += "Source lines of code (SLOC) in source files: " + txt += f"{lines_dict['src']['sloc']}\n" + if lines_dict["dep"]["sloc"] > 0: + txt += "Source lines of code (SLOC) in dependencies: " + txt += f"{lines_dict['dep']['sloc']}\n" + if lines_dict["test"]["sloc"] > 0: + txt += "Source lines of code (SLOC) in tests : " + txt += f"{lines_dict['test']['sloc']}\n" + results["number_lines"] = lines_dict["src"]["sloc"] + results["number_lines__dependencies"] = lines_dict["dep"]["sloc"] + total_asm_lines = self._get_number_of_assembly_lines() + txt += f"Number of assembly lines: {total_asm_lines}\n" + results["number_lines_assembly"] = total_asm_lines + return txt, results + def output(self, _filename): # pylint: disable=too-many-locals,too-many-statements """ _filename is not used @@ -311,24 +317,8 @@ class PrinterHumanSummary(AbstractPrinter): "number_findings": {}, "detectors": [], } - - lines_number = self._lines_number() - if lines_number: - total_lines, total_dep_lines, total_tests_lines = lines_number - txt += f"Number of lines: {total_lines} (+ {total_dep_lines} in dependencies, + {total_tests_lines} in tests)\n" - results["number_lines"] = total_lines - results["number_lines__dependencies"] = total_dep_lines - total_asm_lines = self._get_number_of_assembly_lines() - txt += f"Number of assembly lines: {total_asm_lines}\n" - results["number_lines_assembly"] = total_asm_lines - - ( - number_contracts, - number_contracts_deps, - number_contracts_tests, - ) = self._number_contracts() - txt += f"Number of contracts: {number_contracts} (+ {number_contracts_deps} in dependencies, + {number_contracts_tests} tests) \n\n" - + txt = self._get_contracts(txt) + txt, results = self._get_number_lines(txt, results) ( txt_detectors, detectors_results, @@ -352,7 +342,7 @@ class PrinterHumanSummary(AbstractPrinter): libs = self._standard_libraries() if libs: txt += f'\nUse: {", ".join(libs)}\n' - results["standard_libraries"] = [str(l) for l in libs] + results["standard_libraries"] = [str(lib) for lib in libs] ercs = self._ercs() if ercs: @@ -363,7 +353,6 @@ class PrinterHumanSummary(AbstractPrinter): ["Name", "# functions", "ERCS", "ERC20 info", "Complex code", "Features"] ) for contract in self.slither.contracts_derived: - if contract.is_from_dependency() or contract.is_test: continue diff --git a/slither/printers/summary/loc.py b/slither/printers/summary/loc.py new file mode 100644 index 000000000..4ed9aa6ab --- /dev/null +++ b/slither/printers/summary/loc.py @@ -0,0 +1,127 @@ +""" + Lines of Code (LOC) printer + + Definitions: + cloc: comment lines of code containing only comments + sloc: source lines of code with no whitespace or comments + loc: all lines of code including whitespace and comments + src: source files (excluding tests and dependencies) + dep: dependency files + test: test files +""" +from pathlib import Path +from slither.printers.abstract_printer import AbstractPrinter +from slither.utils.myprettytable import transpose, make_pretty_table +from slither.utils.tests_pattern import is_test_file + + +def count_lines(contract_lines: list) -> tuple: + """Function to count and classify the lines of code in a contract. + Args: + contract_lines: list(str) representing the lines of a contract. + Returns: + tuple(int, int, int) representing (cloc, sloc, loc) + """ + multiline_comment = False + cloc = 0 + sloc = 0 + loc = 0 + + for line in contract_lines: + loc += 1 + stripped_line = line.strip() + if not multiline_comment: + if stripped_line.startswith("//"): + cloc += 1 + elif "/*" in stripped_line: + # Account for case where /* is followed by */ on the same line. + # If it is, then multiline_comment does not need to be set to True + start_idx = stripped_line.find("/*") + end_idx = stripped_line.find("*/", start_idx + 2) + if end_idx == -1: + multiline_comment = True + cloc += 1 + elif stripped_line: + sloc += 1 + else: + cloc += 1 + if "*/" in stripped_line: + multiline_comment = False + + return cloc, sloc, loc + + +def _update_lines_dict(file_type: str, lines: list, lines_dict: dict) -> dict: + """An internal function used to update (mutate in place) the lines_dict. + Args: + file_type: str indicating "src" (source files), "dep" (dependency files), or "test" tests. + lines: list(str) representing the lines of a contract. + lines_dict: dict to be updated with this shape: + { + "src" : {"loc": 30, "sloc": 20, "cloc": 5}, # code in source files + "dep" : {"loc": 50, "sloc": 30, "cloc": 10}, # code in dependencies + "test": {"loc": 80, "sloc": 60, "cloc": 10}, # code in tests + } + Returns: + an updated lines_dict + """ + cloc, sloc, loc = count_lines(lines) + lines_dict[file_type]["loc"] += loc + lines_dict[file_type]["cloc"] += cloc + lines_dict[file_type]["sloc"] += sloc + return lines_dict + + +def compute_loc_metrics(slither) -> dict: + """Used to compute the lines of code metrics for a Slither object. + Args: + slither: A Slither object + Returns: + A new dict with the following shape: + { + "src" : {"loc": 30, "sloc": 20, "cloc": 5}, # code in source files + "dep" : {"loc": 50, "sloc": 30, "cloc": 10}, # code in dependencies + "test": {"loc": 80, "sloc": 60, "cloc": 10}, # code in tests + } + """ + + lines_dict = { + "src": {"loc": 0, "sloc": 0, "cloc": 0}, + "dep": {"loc": 0, "sloc": 0, "cloc": 0}, + "test": {"loc": 0, "sloc": 0, "cloc": 0}, + } + + if not slither.source_code: + return lines_dict + + for filename, source_code in slither.source_code.items(): + current_lines = source_code.splitlines() + is_dep = False + if slither.crytic_compile: + is_dep = slither.crytic_compile.is_dependency(filename) + file_type = "dep" if is_dep else "test" if is_test_file(Path(filename)) else "src" + lines_dict = _update_lines_dict(file_type, current_lines, lines_dict) + return lines_dict + + +class Loc(AbstractPrinter): + ARGUMENT = "loc" + HELP = """Count the total number lines of code (LOC), source lines of code (SLOC), \ + and comment lines of code (CLOC) found in source files (SRC), dependencies (DEP), \ + and test files (TEST).""" + + WIKI = "https://github.com/trailofbits/slither/wiki/Printer-documentation#loc" + + def output(self, _filename): + # compute loc metrics + lines_dict = compute_loc_metrics(self.slither) + + # prepare the table + headers = [""] + list(lines_dict.keys()) + report_dict = transpose(lines_dict) + table = make_pretty_table(headers, report_dict) + txt = "Lines of Code \n" + str(table) + self.info(txt) + res = self.generate_output(txt) + res.add_pretty_table(table, "Code Lines") + return res diff --git a/slither/utils/myprettytable.py b/slither/utils/myprettytable.py index af10a6ff2..efdb96504 100644 --- a/slither/utils/myprettytable.py +++ b/slither/utils/myprettytable.py @@ -22,3 +22,42 @@ class MyPrettyTable: def __str__(self) -> str: return str(self.to_pretty_table()) + + +# **Dict to MyPrettyTable utility functions** + + +# Converts a dict to a MyPrettyTable. Dict keys are the row headers. +# @param headers str[] of column names +# @param body dict of row headers with a dict of the values +# @param totals bool optional add Totals row +def make_pretty_table(headers: list, body: dict, totals: bool = False) -> MyPrettyTable: + table = MyPrettyTable(headers) + for row in body: + table_row = [row] + [body[row][key] for key in headers[1:]] + table.add_row(table_row) + if totals: + table.add_row(["Total"] + [sum([body[row][key] for row in body]) for key in headers[1:]]) + return table + + +# takes a dict of dicts and returns a dict of dicts with the keys transposed +# example: +# in: +# { +# "dep": {"loc": 0, "sloc": 0, "cloc": 0}, +# "test": {"loc": 0, "sloc": 0, "cloc": 0}, +# "src": {"loc": 0, "sloc": 0, "cloc": 0}, +# } +# out: +# { +# 'loc': {'dep': 0, 'test': 0, 'src': 0}, +# 'sloc': {'dep': 0, 'test': 0, 'src': 0}, +# 'cloc': {'dep': 0, 'test': 0, 'src': 0}, +# } +def transpose(table): + any_key = list(table.keys())[0] + return { + inner_key: {outer_key: table[outer_key][inner_key] for outer_key in table} + for inner_key in table[any_key] + } From 4f676309902a9e144bd75af1fa1db0770f0b9ec2 Mon Sep 17 00:00:00 2001 From: bart1e Date: Thu, 9 Feb 2023 19:39:58 +0100 Subject: [PATCH 119/220] Detector for incorrect using-for at the top level added --- slither/detectors/all_detectors.py | 1 + .../statements/incorrect_using_for.py | 200 ++++++++++++++++++ .../0.8.17/IncorrectUsingForTopLevel.sol | 94 ++++++++ ...TopLevel.sol.0.8.17.IncorrectUsingFor.json | 124 +++++++++++ tests/e2e/detectors/test_detectors.py | 5 + 5 files changed, 424 insertions(+) create mode 100644 slither/detectors/statements/incorrect_using_for.py create mode 100644 tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol create mode 100644 tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol.0.8.17.IncorrectUsingFor.json diff --git a/slither/detectors/all_detectors.py b/slither/detectors/all_detectors.py index 9722b8793..21374a38b 100644 --- a/slither/detectors/all_detectors.py +++ b/slither/detectors/all_detectors.py @@ -89,3 +89,4 @@ from .functions.protected_variable import ProtectedVariables from .functions.permit_domain_signature_collision import DomainSeparatorCollision from .functions.codex import Codex from .functions.cyclomatic_complexity import CyclomaticComplexity +from .statements.incorrect_using_for import IncorrectUsingFor \ No newline at end of file diff --git a/slither/detectors/statements/incorrect_using_for.py b/slither/detectors/statements/incorrect_using_for.py new file mode 100644 index 000000000..7cc18deaf --- /dev/null +++ b/slither/detectors/statements/incorrect_using_for.py @@ -0,0 +1,200 @@ +from slither.core.declarations import Contract, Structure, Enum +from slither.core.declarations.using_for_top_level import UsingForTopLevel +from slither.core.solidity_types import ( + UserDefinedType, + Type, + ElementaryType, + TypeAlias, + MappingType, + ArrayType, +) +from slither.core.solidity_types.elementary_type import Uint, Int, Byte +from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification + + +class IncorrectUsingFor(AbstractDetector): + """ + Detector for incorrect using-for statement usage. + """ + + ARGUMENT = "incorrect-using-for" + HELP = "Detects using-for statement usage when no function from a given library matches a given type" + IMPACT = DetectorClassification.INFORMATIONAL + CONFIDENCE = DetectorClassification.HIGH + + WIKI = "https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-using-for-usage" + + WIKI_TITLE = "Incorrect usage of using-for statement" + WIKI_DESCRIPTION = "In Solidity, it is possible to use libraries for certain types, by the `using-for` statement " \ + "(`using for `). However, the Solidity compiler doesn't check whether a given " \ + "library has at least one function matching a given type. If it doesn't, such a statement has " \ + "no effect and may be confusing. " + + # region wiki_exploit_scenario + WIKI_EXPLOIT_SCENARIO = """ + ```solidity + library L { + function f(bool) public pure {} + } + + using L for uint; + ``` + Such a code will compile despite the fact that `L` has no function with `uint` as its first argument.""" + # endregion wiki_exploit_scenario + WIKI_RECOMMENDATION = "Make sure that the libraries used in `using-for` statements have at least one function " \ + "matching a type used in these statements. " + + @staticmethod + def _implicitly_convertible_to_for_contracts(contract1: Contract, contract2: Contract) -> bool: + """ + Returns True if contract1 may be implicitly converted to contract2. + """ + return contract1 == contract2 or contract2 in contract1.inheritance + + @staticmethod + def _implicitly_convertible_to_for_uints(type1: ElementaryType, type2: ElementaryType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2 assuming they are both uints. + """ + assert type1.type in Uint and type2.type in Uint + + return type1.size <= type2.size + + @staticmethod + def _implicitly_convertible_to_for_ints(type1: ElementaryType, type2: ElementaryType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2 assuming they are both ints. + """ + assert type1.type in Int and type2.type in Int + + return type1.size <= type2.size + + @staticmethod + def _implicitly_convertible_to_for_addresses( + type1: ElementaryType, type2: ElementaryType + ) -> bool: + """ + Returns True if type1 may be implicitly converted to type2 assuming they are both addresses. + """ + assert type1.type == "address" and type2.type == "address" + # payable attribute to be implemented; for now, always return True + return True + + @staticmethod + def _implicitly_convertible_to_for_bytes(type1: ElementaryType, type2: ElementaryType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2 assuming they are both bytes. + """ + assert type1.type in Byte and type2.type in Byte + + return type1.size <= type2.size + + @staticmethod + def _implicitly_convertible_to_for_elementary_types( + type1: ElementaryType, type2: ElementaryType + ) -> bool: + """ + Returns True if type1 may be implicitly converted to type2. + """ + if type1.type == "bool" and type2.type == "bool": + return True + if type1.type == "string" and type2.type == "string": + return True + if type1.type == "bytes" and type2.type == "bytes": + return True + if type1.type == "address" and type2.type == "address": + return IncorrectUsingFor._implicitly_convertible_to_for_addresses(type1, type2) + if type1.type in Uint and type2.type in Uint: + return IncorrectUsingFor._implicitly_convertible_to_for_uints(type1, type2) + if type1.type in Int and type2.type in Int: + return IncorrectUsingFor._implicitly_convertible_to_for_ints(type1, type2) + if ( + type1.type != "bytes" + and type2.type != "bytes" + and type1.type in Byte + and type2.type in Byte + ): + return IncorrectUsingFor._implicitly_convertible_to_for_bytes(type1, type2) + return False + + @staticmethod + def _implicitly_convertible_to_for_mappings(type1: MappingType, type2: MappingType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2. + """ + return type1.type_from == type2.type_from and type1.type_to == type2.type_to + + @staticmethod + def _implicitly_convertible_to_for_arrays(type1: ArrayType, type2: ArrayType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2. + """ + return IncorrectUsingFor._implicitly_convertible_to(type1.type, type2.type) + + @staticmethod + def _implicitly_convertible_to(type1: Type, type2: Type) -> bool: + """ + Returns True if type1 may be implicitly converted to type2. + """ + if isinstance(type1, TypeAlias) or isinstance(type2, TypeAlias): + if isinstance(type1, TypeAlias) and isinstance(type2, TypeAlias): + return type1.type == type2.type + return False + + if isinstance(type1, UserDefinedType) and isinstance(type2, UserDefinedType): + if isinstance(type1.type, Contract) and isinstance(type2.type, Contract): + return IncorrectUsingFor._implicitly_convertible_to_for_contracts( + type1.type, type2.type + ) + + if isinstance(type1.type, Structure) and isinstance(type2.type, Structure): + return type1.type.canonical_name == type2.type.canonical_name + + if isinstance(type1.type, Enum) and isinstance(type2.type, Enum): + return type1.type.canonical_name == type2.type.canonical_name + + if isinstance(type1, ElementaryType) and isinstance(type2, ElementaryType): + return IncorrectUsingFor._implicitly_convertible_to_for_elementary_types(type1, type2) + + if isinstance(type1, MappingType) and isinstance(type2, MappingType): + return IncorrectUsingFor._implicitly_convertible_to_for_mappings(type1, type2) + + if isinstance(type1, ArrayType) and isinstance(type2, ArrayType): + return IncorrectUsingFor._implicitly_convertible_to_for_arrays(type1, type2) + + return False + + @staticmethod + def _is_correctly_used(type_: Type, library: Contract) -> bool: + """ + Checks if a `using library for type_` statement is used correctly (that is, does library contain any function + with type_ as the first argument). + """ + for f in library.functions: + if len(f.parameters) == 0: + continue + if not IncorrectUsingFor._implicitly_convertible_to(type_, f.parameters[0].type): + continue + return True + return False + + def _append_result(self, results: list, uf: UsingForTopLevel, type_: Type, library: Contract): + info = f"using-for statement at {uf.source_mapping} is incorrect - no matching function for {type_} found in " \ + f"{library}.\n" + res = self.generate_result(info) + results.append(res) + + def _detect(self): + results = [] + + for uf in self.compilation_unit.using_for_top_level: + # UsingForTopLevel.using_for is a dict with a single entry, which is mapped to a list of functions/libraries + # the following code extracts the type from using-for and skips using-for statements with functions + type_ = list(uf.using_for.keys())[0] + for lib_or_fcn in uf.using_for[type_]: + # checking for using-for with functions is already performed by the compiler; we only consider libraries + if isinstance(lib_or_fcn, UserDefinedType): + if not self._is_correctly_used(type_, lib_or_fcn.type): + self._append_result(results, uf, type_, lib_or_fcn.type) + + return results diff --git a/tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol b/tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol new file mode 100644 index 000000000..5b173e7b5 --- /dev/null +++ b/tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol @@ -0,0 +1,94 @@ +pragma solidity 0.8.17; + +struct S1 +{ + uint __; +} + +struct S2 +{ + uint128 __; +} + +enum E1 +{ + A, + B +} + +enum E2 +{ + A, + B +} + +contract C0 +{ + +} + +contract C1 is C0 +{ + +} + +contract C2 is C1 +{ + +} + +contract C3 +{ + +} + +type custom_uint is uint248; +type custom_int is int248; + +library L +{ + function f0(C0) public pure {} + function f1(bool) public pure {} + function f2(string memory) public pure {} + function f3(bytes memory) public pure {} + function f4(uint248) public pure {} + function f5(int248) public pure {} + function f6(address) public pure {} + function f7(bytes17) public pure {} + function f8(S1 memory) public pure {} + function f9(E1) public pure {} + function f10(mapping(int => uint) storage) public pure {} + function f11(string[] memory) public pure {} + function f12(bytes[][][] memory) public pure {} + function f13(custom_uint) public pure {} +} + +// the following statements are correct +using L for C2; +using L for bool; +using L for string; +using L for bytes; +using L for uint240; +using L for int16; +using L for address; +using L for bytes16; +using L for S1; +using L for E1; +using L for mapping(int => uint); +using L for string[]; +using L for bytes[][][]; +using L for custom_uint; + +// the following statements are incorrect +using L for C3; +using L for bytes17[]; +using L for uint; +using L for int; +using L for bytes18; +using L for S2; +using L for E2; +using L for mapping(int => uint128); +using L for mapping(int128 => uint); +using L for string[][]; +using L for bytes[][]; +using L for custom_int; diff --git a/tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol.0.8.17.IncorrectUsingFor.json b/tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol.0.8.17.IncorrectUsingFor.json new file mode 100644 index 000000000..9321baa9c --- /dev/null +++ b/tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol.0.8.17.IncorrectUsingFor.json @@ -0,0 +1,124 @@ +[ + [ + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#92 is incorrect - no matching function for string[][] found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#92 is incorrect - no matching function for string[][] found in L.\n", + "first_markdown_element": "", + "id": "000067f9a866a9e43f9c82b9b70b3a7657545318fb4d3334b39f03e47b63e50a", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#86 is incorrect - no matching function for int256 found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#86 is incorrect - no matching function for int256 found in L.\n", + "first_markdown_element": "", + "id": "09b0f0c08a3f0fe4ee75eff34f9c4718a5f729814eda9fa21c2ba30a01e1de0e", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#91 is incorrect - no matching function for mapping(int128 => uint256) found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#91 is incorrect - no matching function for mapping(int128 => uint256) found in L.\n", + "first_markdown_element": "", + "id": "1a051922964f790736e90754dfebf381c6e078f957ab8e7eeedf9d79ef9d56e5", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#93 is incorrect - no matching function for bytes[][] found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#93 is incorrect - no matching function for bytes[][] found in L.\n", + "first_markdown_element": "", + "id": "3b1d94dc870c0f03b4f43b34b6278adf6669b9e30e245ae21247d3839445366c", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#94 is incorrect - no matching function for custom_int found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#94 is incorrect - no matching function for custom_int found in L.\n", + "first_markdown_element": "", + "id": "6d993d086c6d6fb8cd005acd124d7d165b38e85cc23d781a8c99d9efd0d2c25a", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#84 is incorrect - no matching function for bytes17[] found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#84 is incorrect - no matching function for bytes17[] found in L.\n", + "first_markdown_element": "", + "id": "6e785ac39c18c840fc9f46fc066670776551a98bfd8d2030ee523a0c55bf5eef", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#88 is incorrect - no matching function for S2 found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#88 is incorrect - no matching function for S2 found in L.\n", + "first_markdown_element": "", + "id": "90efff9103e8469dcd2d251f27bea0ab6875f0f511fe8aedc093532cb4a52aa5", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#87 is incorrect - no matching function for bytes18 found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#87 is incorrect - no matching function for bytes18 found in L.\n", + "first_markdown_element": "", + "id": "a36393040b3e588bbfb6ff945333997a967bc50e1f9d703be020a1786514fb12", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#89 is incorrect - no matching function for E2 found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#89 is incorrect - no matching function for E2 found in L.\n", + "first_markdown_element": "", + "id": "c8be02cb293bf4e4b5bbe3def377356d8761ed34c2bc3259f7073e7840eec6c6", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#90 is incorrect - no matching function for mapping(int256 => uint128) found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#90 is incorrect - no matching function for mapping(int256 => uint128) found in L.\n", + "first_markdown_element": "", + "id": "e6abc32f0e370622f8a17cbc5eb94340b78931210ef47269e39e683cc03a34d3", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#85 is incorrect - no matching function for uint256 found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#85 is incorrect - no matching function for uint256 found in L.\n", + "first_markdown_element": "", + "id": "eec4404d65776c62a3053ef34081ca8cfdc4c32c571e543c337c5af1a0c11c9c", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [], + "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#83 is incorrect - no matching function for C3 found in L.\n", + "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#83 is incorrect - no matching function for C3 found in L.\n", + "first_markdown_element": "", + "id": "f5cb90eb9284eb3935980052fc2ad410058acafa4478ebd3109cc9520510095c", + "check": "incorrect-using-for", + "impact": "Informational", + "confidence": "High" + } + ] +] \ No newline at end of file diff --git a/tests/e2e/detectors/test_detectors.py b/tests/e2e/detectors/test_detectors.py index e6b87d530..2088ac214 100644 --- a/tests/e2e/detectors/test_detectors.py +++ b/tests/e2e/detectors/test_detectors.py @@ -1639,6 +1639,11 @@ ALL_TEST_OBJECTS = [ "LowCyclomaticComplexity.sol", "0.8.16", ), + Test( + all_detectors.IncorrectUsingFor, + "IncorrectUsingForTopLevel.sol", + "0.8.17", + ), ] GENERIC_PATH = "/GENERIC_PATH" From 5a450a07e04626f590ac303aba47db72cfea9c3b Mon Sep 17 00:00:00 2001 From: bart1e Date: Thu, 9 Feb 2023 20:03:36 +0100 Subject: [PATCH 120/220] Black run --- .../statements/incorrect_using_for.py | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/slither/detectors/statements/incorrect_using_for.py b/slither/detectors/statements/incorrect_using_for.py index 7cc18deaf..4df0701a2 100644 --- a/slither/detectors/statements/incorrect_using_for.py +++ b/slither/detectors/statements/incorrect_using_for.py @@ -25,10 +25,12 @@ class IncorrectUsingFor(AbstractDetector): WIKI = "https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-using-for-usage" WIKI_TITLE = "Incorrect usage of using-for statement" - WIKI_DESCRIPTION = "In Solidity, it is possible to use libraries for certain types, by the `using-for` statement " \ - "(`using for `). However, the Solidity compiler doesn't check whether a given " \ - "library has at least one function matching a given type. If it doesn't, such a statement has " \ - "no effect and may be confusing. " + WIKI_DESCRIPTION = ( + "In Solidity, it is possible to use libraries for certain types, by the `using-for` statement " + "(`using for `). However, the Solidity compiler doesn't check whether a given " + "library has at least one function matching a given type. If it doesn't, such a statement has " + "no effect and may be confusing. " + ) # region wiki_exploit_scenario WIKI_EXPLOIT_SCENARIO = """ @@ -41,8 +43,10 @@ class IncorrectUsingFor(AbstractDetector): ``` Such a code will compile despite the fact that `L` has no function with `uint` as its first argument.""" # endregion wiki_exploit_scenario - WIKI_RECOMMENDATION = "Make sure that the libraries used in `using-for` statements have at least one function " \ - "matching a type used in these statements. " + WIKI_RECOMMENDATION = ( + "Make sure that the libraries used in `using-for` statements have at least one function " + "matching a type used in these statements. " + ) @staticmethod def _implicitly_convertible_to_for_contracts(contract1: Contract, contract2: Contract) -> bool: @@ -179,8 +183,10 @@ class IncorrectUsingFor(AbstractDetector): return False def _append_result(self, results: list, uf: UsingForTopLevel, type_: Type, library: Contract): - info = f"using-for statement at {uf.source_mapping} is incorrect - no matching function for {type_} found in " \ - f"{library}.\n" + info = ( + f"using-for statement at {uf.source_mapping} is incorrect - no matching function for {type_} found in " + f"{library}.\n" + ) res = self.generate_result(info) results.append(res) From 32d4bba9efaaffa72b36bca448e0fce2c01b0abd Mon Sep 17 00:00:00 2001 From: bart1e Date: Wed, 3 May 2023 18:01:22 +0200 Subject: [PATCH 121/220] Tests updated --- slither/detectors/all_detectors.py | 2 +- ...TopLevel.sol.0.8.17.IncorrectUsingFor.json | 124 ------------------ ..._8_17_IncorrectUsingForTopLevel_sol__0.txt | 24 ++++ .../0.8.17/IncorrectUsingForTopLevel.sol | 0 .../IncorrectUsingForTopLevel.sol-0.8.17.zip | Bin 0 -> 10081 bytes 5 files changed, 25 insertions(+), 125 deletions(-) delete mode 100644 tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol.0.8.17.IncorrectUsingFor.json create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_IncorrectUsingFor_0_8_17_IncorrectUsingForTopLevel_sol__0.txt rename tests/{detectors => e2e/detectors/test_data}/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol (100%) create mode 100644 tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol-0.8.17.zip diff --git a/slither/detectors/all_detectors.py b/slither/detectors/all_detectors.py index 21374a38b..324c97052 100644 --- a/slither/detectors/all_detectors.py +++ b/slither/detectors/all_detectors.py @@ -89,4 +89,4 @@ from .functions.protected_variable import ProtectedVariables from .functions.permit_domain_signature_collision import DomainSeparatorCollision from .functions.codex import Codex from .functions.cyclomatic_complexity import CyclomaticComplexity -from .statements.incorrect_using_for import IncorrectUsingFor \ No newline at end of file +from .statements.incorrect_using_for import IncorrectUsingFor diff --git a/tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol.0.8.17.IncorrectUsingFor.json b/tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol.0.8.17.IncorrectUsingFor.json deleted file mode 100644 index 9321baa9c..000000000 --- a/tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol.0.8.17.IncorrectUsingFor.json +++ /dev/null @@ -1,124 +0,0 @@ -[ - [ - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#92 is incorrect - no matching function for string[][] found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#92 is incorrect - no matching function for string[][] found in L.\n", - "first_markdown_element": "", - "id": "000067f9a866a9e43f9c82b9b70b3a7657545318fb4d3334b39f03e47b63e50a", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#86 is incorrect - no matching function for int256 found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#86 is incorrect - no matching function for int256 found in L.\n", - "first_markdown_element": "", - "id": "09b0f0c08a3f0fe4ee75eff34f9c4718a5f729814eda9fa21c2ba30a01e1de0e", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#91 is incorrect - no matching function for mapping(int128 => uint256) found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#91 is incorrect - no matching function for mapping(int128 => uint256) found in L.\n", - "first_markdown_element": "", - "id": "1a051922964f790736e90754dfebf381c6e078f957ab8e7eeedf9d79ef9d56e5", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#93 is incorrect - no matching function for bytes[][] found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#93 is incorrect - no matching function for bytes[][] found in L.\n", - "first_markdown_element": "", - "id": "3b1d94dc870c0f03b4f43b34b6278adf6669b9e30e245ae21247d3839445366c", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#94 is incorrect - no matching function for custom_int found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#94 is incorrect - no matching function for custom_int found in L.\n", - "first_markdown_element": "", - "id": "6d993d086c6d6fb8cd005acd124d7d165b38e85cc23d781a8c99d9efd0d2c25a", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#84 is incorrect - no matching function for bytes17[] found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#84 is incorrect - no matching function for bytes17[] found in L.\n", - "first_markdown_element": "", - "id": "6e785ac39c18c840fc9f46fc066670776551a98bfd8d2030ee523a0c55bf5eef", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#88 is incorrect - no matching function for S2 found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#88 is incorrect - no matching function for S2 found in L.\n", - "first_markdown_element": "", - "id": "90efff9103e8469dcd2d251f27bea0ab6875f0f511fe8aedc093532cb4a52aa5", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#87 is incorrect - no matching function for bytes18 found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#87 is incorrect - no matching function for bytes18 found in L.\n", - "first_markdown_element": "", - "id": "a36393040b3e588bbfb6ff945333997a967bc50e1f9d703be020a1786514fb12", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#89 is incorrect - no matching function for E2 found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#89 is incorrect - no matching function for E2 found in L.\n", - "first_markdown_element": "", - "id": "c8be02cb293bf4e4b5bbe3def377356d8761ed34c2bc3259f7073e7840eec6c6", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#90 is incorrect - no matching function for mapping(int256 => uint128) found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#90 is incorrect - no matching function for mapping(int256 => uint128) found in L.\n", - "first_markdown_element": "", - "id": "e6abc32f0e370622f8a17cbc5eb94340b78931210ef47269e39e683cc03a34d3", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#85 is incorrect - no matching function for uint256 found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#85 is incorrect - no matching function for uint256 found in L.\n", - "first_markdown_element": "", - "id": "eec4404d65776c62a3053ef34081ca8cfdc4c32c571e543c337c5af1a0c11c9c", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [], - "description": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#83 is incorrect - no matching function for C3 found in L.\n", - "markdown": "using-for statement at tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#83 is incorrect - no matching function for C3 found in L.\n", - "first_markdown_element": "", - "id": "f5cb90eb9284eb3935980052fc2ad410058acafa4478ebd3109cc9520510095c", - "check": "incorrect-using-for", - "impact": "Informational", - "confidence": "High" - } - ] -] \ No newline at end of file diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectUsingFor_0_8_17_IncorrectUsingForTopLevel_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectUsingFor_0_8_17_IncorrectUsingForTopLevel_sol__0.txt new file mode 100644 index 000000000..4a85bca5f --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectUsingFor_0_8_17_IncorrectUsingForTopLevel_sol__0.txt @@ -0,0 +1,24 @@ +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#84 is incorrect - no matching function for bytes17[] found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#85 is incorrect - no matching function for uint256 found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#90 is incorrect - no matching function for mapping(int256 => uint128) found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#86 is incorrect - no matching function for int256 found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#89 is incorrect - no matching function for E2 found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#93 is incorrect - no matching function for bytes[][] found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#92 is incorrect - no matching function for string[][] found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#91 is incorrect - no matching function for mapping(int128 => uint256) found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#87 is incorrect - no matching function for bytes18 found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#88 is incorrect - no matching function for S2 found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#83 is incorrect - no matching function for C3 found in L. + +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#94 is incorrect - no matching function for custom_int found in L. + diff --git a/tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol b/tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol similarity index 100% rename from tests/detectors/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol rename to tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol diff --git a/tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol-0.8.17.zip b/tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol-0.8.17.zip new file mode 100644 index 0000000000000000000000000000000000000000..9afc56d39e442ef3a41f3541db7a05857656332c GIT binary patch literal 10081 zcmb7~LwhC+fNbB`wr$(C)3I&aHaoVHj&0kvZQH)z-2E)3YH?Qe2kJSBG9aJ=0AK(- z;3}p_jV#0JFozrffFuS2FaZDnDLZ3(Cnr;57gc9VJ9BY+Clz}KSyMMt8+vDZ8+}s` z2YV+MeM2W>3rjasdMjspJ19^vfGz+K008hsM3}RDu{ahi%(U>pWe?j~lJ(+;#wua+ zQ`EwAvXxez4>Y*6Af#2fwoYa_Wj%C^mXrM*Bl}8nJ~xfdhRMaLvnV1hxc~G#AE2?P zr*uNFd29SPW}8esd9x>5kbVCddfafQN-I7SLF1s9bW?~`l}m}QTc{ra;T#uU^~n-5 z4OR#hJH2EVolukAnY}4X#P3>Ez~-S`IE%4SeSGC1z5@1Ce`ajCCge8<5+BPws6pCG zL0Dc-xx4pniunk1(tlnA!!8I7JL=f^w|css5u#4z`r%xkb@KO6YbGk|$(UOkHL7i7 z-9blG=;4g&Le`=Zu$xkdq$%Ir6|4Vuj*;pB<=BI$-jovC`9Xy-c(fqSnoBrCMVzBw zB}lFR`)tu89Y5Pjp-;NF9FE5U-^%}aYljeFG0Zx`z9#5oLHSK~J`_{y{FB zbUU7X$cl=#!v)`XiVUsvADLH%12%o*3*Q7qyurEPTl3qm!NP%Y5u_Ja$zpqL8Ftsq zlUS1#H`30MNzYCs!O9s6m>rn;kqN6ylpzMQ;UZ;=;u{iD4YHA@dU&`p(!6$vY( z*8sa-?-pbegOzq~JcnTBl}${&l5pRz(oYFI4LD(g;^2{!ba3aM7NqRaCA|FX*7HUg ziYwBOi~eX`ORhADbUD9Qxr@Y);jaKyTJ3zTlnKUUnRp!Kpxlg+ELOx@h!;1TYb2>i zyWs{`M>FtWa=jKee|w3&#c`2f>YGUuOxjHHcB9L4U^;rxu6ZVTXOn14t-U;*;LjBq zAa(8{_K6C@nPPGDr%I!#ad}Z`*6LM(EE<%y3dg&{KkZF)(rJiBh;5r` zp7U4zCcYak3%)2()P3HeM|7YEZ?CZ3y$Lz1E&oW_Mnn&79LEkfgr$BQwpd9*?89LY zHy97@|KM6QMSivM%w?B|t&{SlktuFbbQV#k^n<`^oC|^)t#);k(bkx~Fm;eDh`aX0 z&Y)QtLz^FplTDNxu97Wr7MMwU$^Aqg;ohbK7E$VSjcpNPjQ=WX-I7FtvExhmQh2L( znJwOtUiT;)kGFL?1o8&=3NrnDxa~=piHqj_SQ@jw{)gU!GVeNUa&1b_13ine#SEA3 zZ2%kq-yki?FCX}~Zl!b^HQpJ`_&T*z1sj|pKe1+@Cjq3div&D~`@NtTC~HduZgkK^ zj(Vq43}lj)XMvnV8I#Aje3~~~l>kzCaCpB`pF}crSAk?jfFy#Zu{*3PMGiND*%S<% zr^Q*UyhZ&rY`fFrUy9CH9F?eH$lS2w&rtZan~&GLZh#8qDKTftFV z9S<^x(mnI98mcP^StqTfr}tA|pBH&{3Fn`as#Qqi;s_K)%hQM43}xH9`0ShZib^i; z{nSPoY}^8REyc-3mFuOp^8KKA>LsPJWoIqlWX<8)CS420a_F$5DJD6-u$(`O(38o| zi0|U%mp=29`cLYn^*$@OAK|oavz>bB9yzKTo=HRof{(Qrf&>EvOQO3lnAPC1x6j@Y zcI8H@SoGCzqi`sH+9@6%?xCv8qW>_OLC#~Rd`?;K8?WSLpF2OrTz0ZO-(^VV-fIjv z&$ju-H|O&nnM4Ogboie{Bd6d6E~$wM#BN9GWI}%nOY&y>eYu!rwB$#C@!tOk);4ys ze&rDz54#0?4-$gAi?Z@VZRVOB2iVgUoPG3oe1jm&(1#kRibg$4um(a~a*&uv>OI%z}nci=jqCl`ir zCI#g0<3yO)Z75i|uZcEerDr%sXH(du3~U<)=&fHILJ?T;yAcD6NspIkX_9N21Eb!3iU&KzL!>>zA&3Tkp$Ez|QiJ$puv#vJ{GR}h-+9N-+Y6iB9pINZMC+`uiPOX8#vwln5 z|I6z5eC!(U3dH!H9rg-BPQfc8x@Nq+2+76$&dhIE8x&HY7aDcb)_80T*6<6sF!=TB{Pk zQ?7PAZ;e{kljGaNnlu$2k@<5#Q!>jnfY z%!K8MxHb@Dpy5P)vHdxLvpvC2je-5(b=*07$ax?dD$_vz5T))zTWHSNfoFxUASi@M zIbCwjrFS~#-L;NRapGTA7wNbnmb^uoiRG@VJ|kD;J9Xb)!;4ZF$afH4FVbrP?CW%B zk~@qB;I5jBSRN`^ZBp-q$?}Z)C{|O%#7MQ*%X!LCeSO=!a&{Js$|D}WKqvuFI>uvK z@XUZxIcsM`F&QbbNZCx>;R1MkaUkGO1XtRC>%Sbb7_C11t@Gwbe^IchV|0F{5z4{f zuB!`PFyF^;-xf_d+`Q)^3Hg|%4q{9?{1$?IwvCi)Q(I_C-bFh29YC~h*MDd=!tLCN z$98T--8uKKy1Dp~5J-kSIrrj$$gxbqkKj&#rH}<}?8C78c0MEJL_sHP)<%|RPGLlE z%I%tq1;o8Re--%K{jyCnZDk7+21x{j^-O1Ui)K8lAv8Gl>&XKRp}TBj=76Lm{Rh zER0^n$qL)^uz2Wme$l}425o2Xz1ZuHl_e6A>)U&!-b9_<&ZpIoVsADa^Ih@^qQ$A^ zkB7qVj?XO!^jyO3mLo7Irunc6HXGd%$dVQ-=nF!Um_T>L4M&#fPD7UT`d8Z5XG9faAUs{7o1mfcZHHoz9 z8>5p;!~|!IMS&Fa+)emz_5TADd1^}5P%qIB*6R1iuyZ}bWYFgvOw2hcE*06KtM2p# zmHq~yp12hXp$?kSd3N4Cay=tx(AG^+EC?39w!ps(@30+Eq%w5vwoSbmFTn^PC&XAN zLZ+{AXFH30HMi;dx}y#EwC@czM5~AeHkAC)$IH{QSs6^IVbhGrsY5X+XrqS8kdO9v z?@^JRKMHIzoG2Q|)CkD5tl_-;tCoo4n$PDv#AG`L7p3Y@KXoQ8z{HV*o!W#NQ`-Ee+FWgg@c3w;S|1{#H+g z0P`{#KQo&uz*Axu6!w}Fn4?u0k?~9qpfdZ1MhlbXa{6ADN&O&_8On|6+I zY?HCnmxH{Cd`{xU;MrL@c4e-wT9?#)0*a$jxUMgTXl4?nE3kb=ANK4iXsZD2|7i+f z?#x0Uq1}%PE-f;T%HMVvZYcSJ@l9(vOo{UT3f=>Dcanh#4;?eRzaLwHPEw3G{X#3= z%V)+RY$yE?y2j@{)@<5BD4I^c^lk;8h$83v?b8>K^6hw{GFp8J2{-yXV?PqAf z8Mp4u%INTODgW|p=*WT=L^5QhQzR6PteA8(6P7+oK|8pLbH?HXu@t5pn>QFh4qDpe z<~u`D*<$eefafMZkXGK6+NdHv2lKh;tvN9GayXr1kGng|@B&KNE`fi`+uB=zeAb~C z(k`5de!NxJB@H=-LPg{3q2PGoJD!7PUE26rEmOHtS4+c`2eGtHB$yTK)5)@vvrf*d z)i=vh#ld5C=4Qlf4)8E!=0WWA6};xQT87V=6$7=%=xE#jm<+mvs3?SD&(^_II}|DC zMsGFG|Mr@Ph%cuXzD9*Vt(6P7_$u|J%cx#m`LvLZH%h+2d}KeX@3G!(y65vvDjwv9 z+hu=B(!5XEAxa<)vkZn(5sA`bZ>F%1S+iE9Wq117pL7*A_W2GB^8ABzBpf@e)~0N@pYQ>Di!(^LH8m?;{Fr^aOGAss|MBgZ9`1x7lG8woNG zAg(u+REMEZ%1<(tykF0IRklRl8CNk5=d0T*E!E7nfOu>0x{|l>sME4Fai~zJWK#o31 z04CeIkq~slb5`^Ezn$afBa<9o)`r6ml5WmC)cN=@D*AbC<`>TvoQ`^W^}TUlHK%gb z=zP0&h%NTkY;~08WiHl~6~}o{BtTzc37`d0#I0^KiC6(?y4x&k+q7957~y@86Hg!` z|N8o4t3F9*ecK5M0_~c3Y$e6Svi#2_mJ<_e2t;Kg%mRV^K6ig^cKsUiK!s7-5K_tq zn~?6MRn>nC%T`YvPDMR4Y{Y{26_1r+V=3cHz@X~oij;EPq0;KOJwX`-&-#4keW-;G zl3!^v2KGAo65(@GuG#tp_M4Z!h>cr1PH%%t3`}zYPcvF6n#WEs1%gDV{GEnmzrw}~ z?2Z4>pOZRvpY%B7jy@@azwqw1I?El7L~4SwSWl~BtF$i;eiXBbFRX+4=~aEMQ|?es zTL)?LI{QSk^z5inna)hxKKD0E5%E_e$=TCIo0Ao;piHH-T-s;`Ty-#{WT3?P94W`M zAD7v=G&wmi-pyB1{;9_)xr=wxVh_n5;EZ%HMC$RO9{c7)&ODIlkXBROdbUiP`k8K>ZK00UykDf?b8iP) z1Yr)G7f8k*A0UyKj}DoJg)n`5roM2+zP7S(l^{zk=yJKz*wUJQ{@WIp8 zr!jT!#Y)#$OPoG%?#ym|%^z8J&6D$`^wcY7)X>_tsc2l!bUxTt)rqz7#}t!`My=WL zmPh7daaTCPKL8UhukhYq768gho~jb3JzMj1aDTR*+TLrwH&H0i<{P43EvEjShKj{6 zMV%!`Uu(|~5>U<3TEdpd-oH28bIQcISP0p&lLi4|DJu|U&#Z5g?lP{-wXW2r8krWq z^RH&)J}}>jT$?mME`G}xv%=pR{1lUK&f&cD-p7X3@-m0pKzg%D#1b4Tmn2wyV~Ft( zL+|#0ZllDUX58s(E<5o?yd8=7HHTgENj&Q@?`Ay>1TvG5O|PvXP$c0Tt)sJdk9XoS z{z~GeT7yepG-TATVx5|2BT@0tvbCjwD77QuquS)aiEnq=r=^bDHz+#Unsyec7NrX0 zgPX2SaXM&I2tF*n^LzsrW^V$S5@Dr& z^N17Gc|SYZzDm-uQ2xTZF&j6}1M#?E5sdV_g`~Yew#MQ}{nrbPf@Y`NRn}70Pb3b; zSjvCCw)%la!GO3!bgK>cWFh{xbJV6X*~6}FXtlCF2V#fe$2lRhu*RW2+aYte#IP+| z^$%Z<@y6$dp_ZEX>^Rz~76MA=$;vLSW7)V{{*PF%jCV1G-aHjGcbJO3glKaz6o{zD zct-5A3CtBdU9V(45~%U4?{&>KH+f2M22I4b)}|7jl2{NYH6kiyD_z827$oM#8>Mok zNEDr-TZfHdd}C4#97;SO=wR{V)L?@o4P;2Z&YLH~XEEp>>s5DXaPFL;6@qLpVJ0|n zEBFSTkPRlkv`lnkhw9SyZrmv%ZJt`|R92W0eH=NAR*x^yCq_Ao-bC@{r&ZmH6RYNb zWP{m%wgcvVtG!D+FIyf9&aAJrGsnP{d;4yaL?1BEyWjjbJqh`x7t`A3NF^%uH^*S^ zP5TdRb+zrPnQII~Z^EFtr3?~KSo{|mjw5n7mo~L_e-CTVPBiJ)w6U`a9Ga@5;aX81 zqe&!owf|^Lph<@G4CH35oAJZJK1mi8KS%Zf1#Bl*KJ=Q41 z>MuO+5YNftMyj~~R%S+;8A;<+UbGGiP%IDxLk~{B#3gt`9)g@>Ap;Q1UvQ!+=cpPn zo`rp3%26s)pmk&({ExWTxdB$slMAK3M;F{T(RIl!s?l8YqzE>B-m^YQuSU#tHVCk~ z4qw4IC7WWPB7^ysAX?h?a=P@HkXE9Es zF`oLB5aGJcrb7GzqxnhkpB*|zMIggJ$AP55tn7OGQn8=|b8n~fKMBetW&b?HClQlW zwI+Qst@}|qWVz}Z5n@kfU~upxQF+i?J18oABG3t(?o5NqowSDfM6LKaK}PhM<3w%> zK}R47o-{01?%5LLgeB7>|2!So1?D<};4;cat0lO%e+?)Bwc1%1opKX~jljh_)Z_1K zl;m&x$t9&F3jcQVJvxvU8u@(YqK7C@rs}l{(O|p?{I~2ohVn#Vp5JvYS_*1kJ}Jhz zM#B5=&M}1xBO>{x1yBA8@Zwas)b?s76AlWvY{k$#mMu6<>o(>zV?W3p7|vK4SoJ2| z@&q5(?go`;Bu*@`LONz#&tfZf=TQ=!a$J%jp1Z}>bR7XTzV=R%%OQWu0L6&r!HV6% znV7_9ka#f^>olflCljs6e%)M5X?y*0 z=C|ceDv=;rju<32%4O$_Pl=}pZSwMkRo6iZ7X>o9q(HAYvnzC}wZvRT89VDDGWNo; zsb6`vnls^)7m>|>?U7V|rxc?87pV<- zjxKBd+N=!(Fox{nJI95xY5;Y&*aXBN-2bW)e&SP=b1`zaHVboP6pLa?)OvMSz@SFLU7(g-y43I=!TY^F$h8x5 zwgOvmnU+41ZP0r+I>i(IG>s&pIcl0m>M9(>&Dg=yY^rGA3nkd&zsxhhmMv+Bjl|(7#{E`ken!*I6N%y# zt3eMyW+K#3bfouej4~#=|4r=1Spd>eM-mfb=~}Bo4zZg$cvQ>X2A}DOhqrMqQF_Tf z^|)L2?Kq%-wDa{>z6rVQpuO~&kO*{yML_oL_xKwI#fx7sAiJJG%r_InYC-nrv_Sv3 zBb#E<)TpY!oq3jQ;_}~dG7n&LK5>pWP*?Gnp?D&|Vx;EpL+)@0>MyB`?3wxHGV4Rk zmWd}%ZO^dY3!Z8I-i7bx0*AhXpc*}F;ygvVB;4qZ7k!f>tDv3INQ|slC|}^WXH@Yj8L<}fxszWbfnq^NW)CY2(#PQYxkgz_Ym>m|8lB)FYl;bn|a+n zJJKWdwb6A?z+j*sXr9}Yp=nSX3jj+;OQ*IsZD8ZF={g5H&)xN>R6#DEHx?|PTrc@T zynlG4tW;pI`=*9l(tP}C*~TE;?ZnwyA`w|qIS+eM84N(#?xi)dTqKq}aWBUMr}$5R zUz>o}iwp)BKhxDLT!W4Vg#i zOCk+>`|yod%NiGS-Fk^AqE_lLVA32RPHK;L_C~-Lt!km7dDqqOlAqrullmW`wqNGr zG|agpg?c6tFY{Tghd%}gEzSqLgpY3=l1v1|b{q)#q`FzFm%+eQIW#gD%Erx{d&fn9 zoI&46v+b-L-FE+D1BjxQ8=^p@(nN z>pWy;2UoSN;Eh-(F>>ySCELF=2tC|%{m4-bm^ieXh>W{BdHs~!uc$8-26FEC4Ob3+g+`qy#VLGBQFOVhP+YASjpQ+u?AxSp7!=;}#fsFF2B zi(HdOPC_YO#Kmhmif{*uJo>x08~(LJl3$%Rm2%}8CCJBwDbcZLpuC|9#Grs$K1~0_Z+xZW{q4C!~rl3`4NLYFA zbktlxf(6@ST{j+Q83Yhy)>@MOB+~qeq^8Q^+##r(cGD{g#q&456py+|0$XqiF}RK= zNwr;;plL_xYi(J!1z|8or^I<7{lp0=Lqk*;1j1tSHV>?EU8+ovVpI>NNP*pN#D`22 zs}q3+x2H_=&fA4+Bt^|zuXzVgvl7QpCwGqaxDavmG_*V1XEfP*C|QQwGRU%r7i2C! ze3x+}9lGupPs!NuTX2R`;y|TsBU-D)SI*R)T(0M&&`Z$-mVq~j;cM3*n?rgB`17_) zef>O9NKoYxd(Tuu+Og3pKeu?Z=xiAU@8I zrtp>C{A}fhhMPJLksewW#!xQdqfCjU6CAs{Qqa)K{i4>A zx7B(qn@GrSn#^%$+Nfzq82} z;r9ofF5+{ISsMf3#b5cLW%9^|j$M594lrhT1#3krj_)6Rq!HH48{=R>_#epv>5QL2 z7p6TSTsDT1-S0o;3KbC7lV5z$)T=racmcMcEWGEkskAcCZ5kNQkA?gQ)yapg9pjotlnT{AFDIEOZ=}9Q_=rp$P3eCZ|cj{?%XY6j46u?86b3S&Vnc zF(AS;W3(lpe`%QW6n_JYzA1Hi#CSGdaK@~jKz_IT3eYc*tDUX4u;4MEBAV?Ke9EOt+P@2q>?G+x5nEm4(-1INIWf7 ziHy=`9wrr_;UP)Q{2eLW;3FpB*e_o?j~|^7!Ksd(4np;T4D8`ar5lloilZu$}`S%Mpln-0ijW7tmIKqc+DDJTQu!)6hs? zH^7-iF69<%Yv<97e2QzQiYu|l2wc*zUFA|-a;oLwpR$P!B-U~Ll*Gjcv z|2XP87XP{H5+ITr=eUzRmy0 zZQ50>AEVi$>aQMwun;F$;4$Vm+xl>{#vbYr+1Q4tt;+$Wtq*Ht3}F&}EAW&v$sLV@ zo7biFQ~`AAGEqlJ2<7VxZu%u6d%xKu?|m|pO89vvb`CMK Date: Sun, 26 Feb 2023 17:39:01 +0100 Subject: [PATCH 122/220] Detector for array length caching added --- slither/detectors/all_detectors.py | 1 + .../operations/cache_array_length.py | 215 ++++++++++++++++++ .../0.8.17/CacheArrayLength.sol | 127 +++++++++++ ...rayLength.sol.0.8.17.CacheArrayLength.json | 74 ++++++ tests/e2e/detectors/test_detectors.py | 5 + 5 files changed, 422 insertions(+) create mode 100644 slither/detectors/operations/cache_array_length.py create mode 100644 tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol create mode 100644 tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json diff --git a/slither/detectors/all_detectors.py b/slither/detectors/all_detectors.py index 9722b8793..6a1ec6739 100644 --- a/slither/detectors/all_detectors.py +++ b/slither/detectors/all_detectors.py @@ -89,3 +89,4 @@ from .functions.protected_variable import ProtectedVariables from .functions.permit_domain_signature_collision import DomainSeparatorCollision from .functions.codex import Codex from .functions.cyclomatic_complexity import CyclomaticComplexity +from .operations.cache_array_length import CacheArrayLength diff --git a/slither/detectors/operations/cache_array_length.py b/slither/detectors/operations/cache_array_length.py new file mode 100644 index 000000000..8c1112d2d --- /dev/null +++ b/slither/detectors/operations/cache_array_length.py @@ -0,0 +1,215 @@ +from typing import List, Set + +from slither.core.cfg.node import Node, NodeType +from slither.core.declarations import Function +from slither.core.expressions import BinaryOperation, Identifier, MemberAccess, UnaryOperation +from slither.core.solidity_types import ArrayType +from slither.core.source_mapping.source_mapping import SourceMapping +from slither.core.variables import StateVariable +from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification +from slither.slithir.operations import Length, Delete + + +class CacheArrayLength(AbstractDetector): + """ + Detects `for` loops that use `length` member of some storage array in their loop condition and don't modify it. + """ + + ARGUMENT = "cache-array-length" + HELP = ( + "Detects `for` loops that use `length` member of some storage array in their loop condition and don't " + "modify it. " + ) + IMPACT = DetectorClassification.OPTIMIZATION + CONFIDENCE = DetectorClassification.HIGH + + WIKI = "https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length" + + WIKI_TITLE = "Cache array length" + WIKI_DESCRIPTION = ( + "Detects `for` loops that use `length` member of some storage array in their loop condition " + "and don't modify it. " + ) + WIKI_EXPLOIT_SCENARIO = """ +```solidity +contract C +{ + uint[] array; + + function f() public + { + for (uint i = 0; i < array.length; i++) + { + // code that does not modify length of `array` + } + } +} +``` +Since the `for` loop in `f` doesn't modify `array.length`, it is more gas efficient to cache it in some local variable and use that variable instead, like in the following example: + +```solidity +contract C +{ + uint[] array; + + function f() public + { + uint array_length = array.length; + for (uint i = 0; i < array_length; i++) + { + // code that does not modify length of `array` + } + } +} +``` + """ + WIKI_RECOMMENDATION = ( + "Cache the lengths of storage arrays if they are used and not modified in `for` loops." + ) + + @staticmethod + def _is_identifier_member_access_comparison(exp: BinaryOperation) -> bool: + """ + Checks whether a BinaryOperation `exp` is an operation on Identifier and MemberAccess. + """ + return ( + isinstance(exp.expression_left, Identifier) + and isinstance(exp.expression_right, MemberAccess) + ) or ( + isinstance(exp.expression_left, MemberAccess) + and isinstance(exp.expression_right, Identifier) + ) + + @staticmethod + def _extract_array_from_length_member_access(exp: MemberAccess) -> [StateVariable | None]: + """ + Given a member access `exp`, it returns state array which `length` member is accessed through `exp`. + If array is not a state array or its `length` member is not referenced, it returns `None`. + """ + if exp.member_name != "length": + return None + if not isinstance(exp.expression, Identifier): + return None + if not isinstance(exp.expression.value, StateVariable): + return None + if not isinstance(exp.expression.value.type, ArrayType): + return None + return exp.expression.value + + @staticmethod + def _is_loop_referencing_array_length( + node: Node, visited: Set[Node], array: StateVariable, depth: int + ) -> True: + """ + For a given loop, checks if it references `array.length` at some point. + Will also return True if `array.length` is referenced but not changed. + This may potentially generate false negatives in the detector, but it was done this way because: + - situations when array `length` is referenced but not modified in loop are rare + - checking if `array.length` is indeed modified would require much more work + """ + visited.add(node) + if node.type == NodeType.STARTLOOP: + depth += 1 + if node.type == NodeType.ENDLOOP: + depth -= 1 + if depth == 0: + return False + + # Array length may change in the following situations: + # - when `push` is called + # - when `pop` is called + # - when `delete` is called on the entire array + if node.type == NodeType.EXPRESSION: + for op in node.irs: + if isinstance(op, Length) and op.value == array: + # op accesses array.length, not necessarily modifying it + return True + if isinstance(op, Delete): + # take into account only delete entire array, since delete array[i] doesn't change `array.length` + if ( + isinstance(op.expression, UnaryOperation) + and isinstance(op.expression.expression, Identifier) + and op.expression.expression.value == array + ): + return True + + for son in node.sons: + if son not in visited: + if CacheArrayLength._is_loop_referencing_array_length(son, visited, array, depth): + return True + return False + + @staticmethod + def _handle_loops(nodes: List[Node], non_optimal_array_len_usages: List[SourceMapping]) -> None: + """ + For each loop, checks if it has a comparison with `length` array member and, if it has, checks whether that + array size could potentially change in that loop. + If it cannot, the loop condition is added to `non_optimal_array_len_usages`. + There may be some false negatives here - see docs for `_is_loop_referencing_array_length` for more information. + """ + for node in nodes: + if node.type == NodeType.STARTLOOP: + if_node = node.sons[0] + if if_node.type != NodeType.IFLOOP: + continue + if not isinstance(if_node.expression, BinaryOperation): + continue + exp: BinaryOperation = if_node.expression + if not CacheArrayLength._is_identifier_member_access_comparison(exp): + continue + array: StateVariable + if isinstance(exp.expression_right, MemberAccess): + array = CacheArrayLength._extract_array_from_length_member_access( + exp.expression_right + ) + else: # isinstance(exp.expression_left, MemberAccess) == True + array = CacheArrayLength._extract_array_from_length_member_access( + exp.expression_left + ) + if array is None: + continue + + visited: Set[Node] = set() + if not CacheArrayLength._is_loop_referencing_array_length( + if_node, visited, array, 1 + ): + non_optimal_array_len_usages.append(if_node.expression) + + @staticmethod + def _get_non_optimal_array_len_usages_for_function(f: Function) -> List[SourceMapping]: + """ + Finds non-optimal usages of array length in loop conditions in a given function. + """ + non_optimal_array_len_usages: List[SourceMapping] = [] + CacheArrayLength._handle_loops(f.nodes, non_optimal_array_len_usages) + + return non_optimal_array_len_usages + + @staticmethod + def _get_non_optimal_array_len_usages(functions: List[Function]) -> List[SourceMapping]: + """ + Finds non-optimal usages of array length in loop conditions in given functions. + """ + non_optimal_array_len_usages: List[SourceMapping] = [] + + for f in functions: + non_optimal_array_len_usages += ( + CacheArrayLength._get_non_optimal_array_len_usages_for_function(f) + ) + + return non_optimal_array_len_usages + + def _detect(self): + results = [] + + non_optimal_array_len_usages = CacheArrayLength._get_non_optimal_array_len_usages( + self.compilation_unit.functions + ) + for usage in non_optimal_array_len_usages: + info = [ + f"Loop condition at {usage.source_mapping} should use cached array length instead of referencing " + f"`length` member of the storage array.\n " + ] + res = self.generate_result(info) + results.append(res) + return results diff --git a/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol b/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol new file mode 100644 index 000000000..79858d182 --- /dev/null +++ b/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol @@ -0,0 +1,127 @@ +pragma solidity 0.8.17; + +contract CacheArrayLength +{ + struct S + { + uint s; + } + + S[] array; + S[] array2; + + function f() public + { + // array accessed but length doesn't change + for (uint i = 0; i < array.length; i++) // warning should appear + { + array[i] = S(0); + } + + // array.length doesn't change, but array.length not used in loop condition + for (uint i = array.length; i >= 0; i--) + { + + } + + // array.length changes in the inner loop + for (uint i = 0; i < array.length; i++) + { + for (uint j = i; j < 2 * i; j++) + array.push(S(j)); + } + + // array.length changes + for (uint i = 0; i < array.length; i++) + { + array.pop(); + } + + // array.length changes + for (uint i = 0; i < array.length; i++) + { + delete array; + } + + // array.length doesn't change despite using delete + for (uint i = 0; i < array.length; i++) // warning should appear + { + delete array[i]; + } + + // array.length changes; push used in more complex expression + for (uint i = 0; i < array.length; i++) + { + array.push() = S(i); + } + + // array.length doesn't change + for (uint i = 0; i < array.length; i++) // warning should appear + { + array2.pop(); + array2.push(); + array2.push(S(i)); + delete array2; + delete array[0]; + } + + // array.length changes; array2.length doesn't change + for (uint i = 0; i < 7; i++) + { + for (uint j = i; j < array.length; j++) + { + for (uint k = 0; k < j; k++) + { + + } + + for (uint k = 0; k < array2.length; k++) // warning should appear + { + array.pop(); + } + } + } + + // array.length doesn't change; array2.length changes + for (uint i = 0; i < 7; i++) + { + for (uint j = i; j < array.length; j++) // warning should appear + { + for (uint k = 0; k < j; k++) + { + + } + + for (uint k = 0; k < array2.length; k++) + { + array2.pop(); + } + } + } + + // none of array.length and array2.length changes + for (uint i = 0; i < 7; i++) + { + for (uint j = i; j < array.length; j++) // warning should appear + { + for (uint k = 0; k < j; k++) + { + + } + + for (uint k = 0; k < array2.length; k++) // warning should appear + { + + } + } + } + + S[] memory array3; + + // array3 not modified, but it's not a storage array + for (uint i = 0; i < array3.length; i++) + { + + } + } +} \ No newline at end of file diff --git a/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json b/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json new file mode 100644 index 000000000..b2050508f --- /dev/null +++ b/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json @@ -0,0 +1,74 @@ +[ + [ + { + "elements": [], + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#88 should use cached array length instead of referencing `length` member of the storage array.\n", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#88 should use cached array length instead of referencing `length` member of the storage array.\n", + "first_markdown_element": "", + "id": "66f0059f2e2608b9e532ab9f6a473aa9128f1e9f02fe16fcb960b4ae4970b2cb", + "check": "cache-array-length", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [], + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#16 should use cached array length instead of referencing `length` member of the storage array.\n", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#16 should use cached array length instead of referencing `length` member of the storage array.\n", + "first_markdown_element": "", + "id": "8463e2cd88985588ad2426476df033957fb4f8969117b7649f1165244b86d2e0", + "check": "cache-array-length", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [], + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#105 should use cached array length instead of referencing `length` member of the storage array.\n", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#105 should use cached array length instead of referencing `length` member of the storage array.\n", + "first_markdown_element": "", + "id": "961db8345eea46c3814eb2c6f6fc6d1506a2feaa85630349266cff940f33a7ab", + "check": "cache-array-length", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [], + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#59 should use cached array length instead of referencing `length` member of the storage array.\n", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#59 should use cached array length instead of referencing `length` member of the storage array.\n", + "first_markdown_element": "", + "id": "aea0a11159dec6d660f39a09aa44b56ad0effb7ced7183552b21b69f0f62e0c7", + "check": "cache-array-length", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [], + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#78 should use cached array length instead of referencing `length` member of the storage array.\n", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#78 should use cached array length instead of referencing `length` member of the storage array.\n", + "first_markdown_element": "", + "id": "d296a0fd4cbe7b9a2db11b3d08b2db08a53414326a91eeda1f78853c4d4c5714", + "check": "cache-array-length", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [], + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#112 should use cached array length instead of referencing `length` member of the storage array.\n", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#112 should use cached array length instead of referencing `length` member of the storage array.\n", + "first_markdown_element": "", + "id": "db2bfdc710cfa1ea5339e1f14b1a5b80735c50c37522f983a220b579df34c5d0", + "check": "cache-array-length", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [], + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#47 should use cached array length instead of referencing `length` member of the storage array.\n", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#47 should use cached array length instead of referencing `length` member of the storage array.\n", + "first_markdown_element": "", + "id": "f5085e5d1ddd69d59f60443b7e89ea5f7301ba6a0a42786624b783389474aaf7", + "check": "cache-array-length", + "impact": "Optimization", + "confidence": "High" + } + ] +] \ No newline at end of file diff --git a/tests/e2e/detectors/test_detectors.py b/tests/e2e/detectors/test_detectors.py index e6b87d530..5a9180256 100644 --- a/tests/e2e/detectors/test_detectors.py +++ b/tests/e2e/detectors/test_detectors.py @@ -1639,6 +1639,11 @@ ALL_TEST_OBJECTS = [ "LowCyclomaticComplexity.sol", "0.8.16", ), + Test( + all_detectors.CacheArrayLength, + "CacheArrayLength.sol", + "0.8.17", + ), ] GENERIC_PATH = "/GENERIC_PATH" From 71fef2c437ca97bc7e303f6eadc615252ef78726 Mon Sep 17 00:00:00 2001 From: bart1e Date: Sun, 26 Feb 2023 18:11:34 +0100 Subject: [PATCH 123/220] 'unsupported operand type' error fix --- .../operations/cache_array_length.py | 2 +- ...rayLength.sol.0.8.17.CacheArrayLength.json | 42 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/slither/detectors/operations/cache_array_length.py b/slither/detectors/operations/cache_array_length.py index 8c1112d2d..1f8111bdb 100644 --- a/slither/detectors/operations/cache_array_length.py +++ b/slither/detectors/operations/cache_array_length.py @@ -81,7 +81,7 @@ contract C ) @staticmethod - def _extract_array_from_length_member_access(exp: MemberAccess) -> [StateVariable | None]: + def _extract_array_from_length_member_access(exp: MemberAccess) -> StateVariable: """ Given a member access `exp`, it returns state array which `length` member is accessed through `exp`. If array is not a state array or its `length` member is not referenced, it returns `None`. diff --git a/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json b/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json index b2050508f..3323ff479 100644 --- a/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json +++ b/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json @@ -2,70 +2,70 @@ [ { "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#88 should use cached array length instead of referencing `length` member of the storage array.\n", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#88 should use cached array length instead of referencing `length` member of the storage array.\n", + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#105 should use cached array length instead of referencing `length` member of the storage array.\n ", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#105 should use cached array length instead of referencing `length` member of the storage array.\n ", "first_markdown_element": "", - "id": "66f0059f2e2608b9e532ab9f6a473aa9128f1e9f02fe16fcb960b4ae4970b2cb", + "id": "2ff6144814e406cadadd58712f5a7a8ef6ee169da06660d590e7bee37759fc98", "check": "cache-array-length", "impact": "Optimization", "confidence": "High" }, { "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#16 should use cached array length instead of referencing `length` member of the storage array.\n", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#16 should use cached array length instead of referencing `length` member of the storage array.\n", + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#59 should use cached array length instead of referencing `length` member of the storage array.\n ", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#59 should use cached array length instead of referencing `length` member of the storage array.\n ", "first_markdown_element": "", - "id": "8463e2cd88985588ad2426476df033957fb4f8969117b7649f1165244b86d2e0", + "id": "48a6388cf2193fdd780ea86cb3e588dfd3276182e209f3f2807d9927a5ba25bc", "check": "cache-array-length", "impact": "Optimization", "confidence": "High" }, { "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#105 should use cached array length instead of referencing `length` member of the storage array.\n", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#105 should use cached array length instead of referencing `length` member of the storage array.\n", + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#47 should use cached array length instead of referencing `length` member of the storage array.\n ", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#47 should use cached array length instead of referencing `length` member of the storage array.\n ", "first_markdown_element": "", - "id": "961db8345eea46c3814eb2c6f6fc6d1506a2feaa85630349266cff940f33a7ab", + "id": "562b7ae618977ea1d0a232d8af5edd81ce404b6844e864d0c4ab162a88142c71", "check": "cache-array-length", "impact": "Optimization", "confidence": "High" }, { "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#59 should use cached array length instead of referencing `length` member of the storage array.\n", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#59 should use cached array length instead of referencing `length` member of the storage array.\n", + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#112 should use cached array length instead of referencing `length` member of the storage array.\n ", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#112 should use cached array length instead of referencing `length` member of the storage array.\n ", "first_markdown_element": "", - "id": "aea0a11159dec6d660f39a09aa44b56ad0effb7ced7183552b21b69f0f62e0c7", + "id": "8f1aa2da0763f65179e90a2b96d7feb68c99aab60f227a5da8dad2f12069f047", "check": "cache-array-length", "impact": "Optimization", "confidence": "High" }, { "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#78 should use cached array length instead of referencing `length` member of the storage array.\n", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#78 should use cached array length instead of referencing `length` member of the storage array.\n", + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#88 should use cached array length instead of referencing `length` member of the storage array.\n ", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#88 should use cached array length instead of referencing `length` member of the storage array.\n ", "first_markdown_element": "", - "id": "d296a0fd4cbe7b9a2db11b3d08b2db08a53414326a91eeda1f78853c4d4c5714", + "id": "9c988bc3f6748fadb8527c9eea53e3d06f5f4e7b2a0c7c70993c4af758bbba47", "check": "cache-array-length", "impact": "Optimization", "confidence": "High" }, { "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#112 should use cached array length instead of referencing `length` member of the storage array.\n", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#112 should use cached array length instead of referencing `length` member of the storage array.\n", + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#78 should use cached array length instead of referencing `length` member of the storage array.\n ", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#78 should use cached array length instead of referencing `length` member of the storage array.\n ", "first_markdown_element": "", - "id": "db2bfdc710cfa1ea5339e1f14b1a5b80735c50c37522f983a220b579df34c5d0", + "id": "a1c39b4ae47535f3354d0bf26ea67d3b524efb94a3bdb2f503bda245471ee451", "check": "cache-array-length", "impact": "Optimization", "confidence": "High" }, { "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#47 should use cached array length instead of referencing `length` member of the storage array.\n", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#47 should use cached array length instead of referencing `length` member of the storage array.\n", + "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#16 should use cached array length instead of referencing `length` member of the storage array.\n ", + "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#16 should use cached array length instead of referencing `length` member of the storage array.\n ", "first_markdown_element": "", - "id": "f5085e5d1ddd69d59f60443b7e89ea5f7301ba6a0a42786624b783389474aaf7", + "id": "c57b54ebb07e5114ccb8c124fa3971b9385d5252264f2bf2acbe131b3a986aa8", "check": "cache-array-length", "impact": "Optimization", "confidence": "High" From d1804f3d01edb309f9632ac0ba67e0ca7e8fdce3 Mon Sep 17 00:00:00 2001 From: bart1e Date: Wed, 3 May 2023 19:20:05 +0200 Subject: [PATCH 124/220] Tests updated --- ...yLength_0_8_17_CacheArrayLength_sol__0.txt | 14 ++ .../0.8.17/CacheArrayLength.sol | 127 ++++++++++++++++++ .../0.8.17/CacheArrayLength.sol-0.8.17.zip | Bin 0 -> 7589 bytes 3 files changed, 141 insertions(+) create mode 100644 tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt create mode 100644 tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol create mode 100644 tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol-0.8.17.zip diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt new file mode 100644 index 000000000..a0ba35740 --- /dev/null +++ b/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt @@ -0,0 +1,14 @@ +Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#47 should use cached array length instead of referencing `length` member of the storage array. + +Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#78 should use cached array length instead of referencing `length` member of the storage array. + +Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#16 should use cached array length instead of referencing `length` member of the storage array. + +Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#88 should use cached array length instead of referencing `length` member of the storage array. + +Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#105 should use cached array length instead of referencing `length` member of the storage array. + +Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#112 should use cached array length instead of referencing `length` member of the storage array. + +Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#59 should use cached array length instead of referencing `length` member of the storage array. + diff --git a/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol b/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol new file mode 100644 index 000000000..79858d182 --- /dev/null +++ b/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol @@ -0,0 +1,127 @@ +pragma solidity 0.8.17; + +contract CacheArrayLength +{ + struct S + { + uint s; + } + + S[] array; + S[] array2; + + function f() public + { + // array accessed but length doesn't change + for (uint i = 0; i < array.length; i++) // warning should appear + { + array[i] = S(0); + } + + // array.length doesn't change, but array.length not used in loop condition + for (uint i = array.length; i >= 0; i--) + { + + } + + // array.length changes in the inner loop + for (uint i = 0; i < array.length; i++) + { + for (uint j = i; j < 2 * i; j++) + array.push(S(j)); + } + + // array.length changes + for (uint i = 0; i < array.length; i++) + { + array.pop(); + } + + // array.length changes + for (uint i = 0; i < array.length; i++) + { + delete array; + } + + // array.length doesn't change despite using delete + for (uint i = 0; i < array.length; i++) // warning should appear + { + delete array[i]; + } + + // array.length changes; push used in more complex expression + for (uint i = 0; i < array.length; i++) + { + array.push() = S(i); + } + + // array.length doesn't change + for (uint i = 0; i < array.length; i++) // warning should appear + { + array2.pop(); + array2.push(); + array2.push(S(i)); + delete array2; + delete array[0]; + } + + // array.length changes; array2.length doesn't change + for (uint i = 0; i < 7; i++) + { + for (uint j = i; j < array.length; j++) + { + for (uint k = 0; k < j; k++) + { + + } + + for (uint k = 0; k < array2.length; k++) // warning should appear + { + array.pop(); + } + } + } + + // array.length doesn't change; array2.length changes + for (uint i = 0; i < 7; i++) + { + for (uint j = i; j < array.length; j++) // warning should appear + { + for (uint k = 0; k < j; k++) + { + + } + + for (uint k = 0; k < array2.length; k++) + { + array2.pop(); + } + } + } + + // none of array.length and array2.length changes + for (uint i = 0; i < 7; i++) + { + for (uint j = i; j < array.length; j++) // warning should appear + { + for (uint k = 0; k < j; k++) + { + + } + + for (uint k = 0; k < array2.length; k++) // warning should appear + { + + } + } + } + + S[] memory array3; + + // array3 not modified, but it's not a storage array + for (uint i = 0; i < array3.length; i++) + { + + } + } +} \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol-0.8.17.zip b/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol-0.8.17.zip new file mode 100644 index 0000000000000000000000000000000000000000..ab3d813718b45d438f91556934cc243e900beb57 GIT binary patch literal 7589 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 literal 0 HcmV?d00001 From 9cc616e4cc539a6479673d62565625d446532b0e Mon Sep 17 00:00:00 2001 From: bart1e Date: Wed, 3 May 2023 19:21:58 +0200 Subject: [PATCH 125/220] Old tests removed --- .../0.8.17/CacheArrayLength.sol | 127 ------------------ ...rayLength.sol.0.8.17.CacheArrayLength.json | 74 ---------- 2 files changed, 201 deletions(-) delete mode 100644 tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol delete mode 100644 tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json diff --git a/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol b/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol deleted file mode 100644 index 79858d182..000000000 --- a/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol +++ /dev/null @@ -1,127 +0,0 @@ -pragma solidity 0.8.17; - -contract CacheArrayLength -{ - struct S - { - uint s; - } - - S[] array; - S[] array2; - - function f() public - { - // array accessed but length doesn't change - for (uint i = 0; i < array.length; i++) // warning should appear - { - array[i] = S(0); - } - - // array.length doesn't change, but array.length not used in loop condition - for (uint i = array.length; i >= 0; i--) - { - - } - - // array.length changes in the inner loop - for (uint i = 0; i < array.length; i++) - { - for (uint j = i; j < 2 * i; j++) - array.push(S(j)); - } - - // array.length changes - for (uint i = 0; i < array.length; i++) - { - array.pop(); - } - - // array.length changes - for (uint i = 0; i < array.length; i++) - { - delete array; - } - - // array.length doesn't change despite using delete - for (uint i = 0; i < array.length; i++) // warning should appear - { - delete array[i]; - } - - // array.length changes; push used in more complex expression - for (uint i = 0; i < array.length; i++) - { - array.push() = S(i); - } - - // array.length doesn't change - for (uint i = 0; i < array.length; i++) // warning should appear - { - array2.pop(); - array2.push(); - array2.push(S(i)); - delete array2; - delete array[0]; - } - - // array.length changes; array2.length doesn't change - for (uint i = 0; i < 7; i++) - { - for (uint j = i; j < array.length; j++) - { - for (uint k = 0; k < j; k++) - { - - } - - for (uint k = 0; k < array2.length; k++) // warning should appear - { - array.pop(); - } - } - } - - // array.length doesn't change; array2.length changes - for (uint i = 0; i < 7; i++) - { - for (uint j = i; j < array.length; j++) // warning should appear - { - for (uint k = 0; k < j; k++) - { - - } - - for (uint k = 0; k < array2.length; k++) - { - array2.pop(); - } - } - } - - // none of array.length and array2.length changes - for (uint i = 0; i < 7; i++) - { - for (uint j = i; j < array.length; j++) // warning should appear - { - for (uint k = 0; k < j; k++) - { - - } - - for (uint k = 0; k < array2.length; k++) // warning should appear - { - - } - } - } - - S[] memory array3; - - // array3 not modified, but it's not a storage array - for (uint i = 0; i < array3.length; i++) - { - - } - } -} \ No newline at end of file diff --git a/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json b/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json deleted file mode 100644 index 3323ff479..000000000 --- a/tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol.0.8.17.CacheArrayLength.json +++ /dev/null @@ -1,74 +0,0 @@ -[ - [ - { - "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#105 should use cached array length instead of referencing `length` member of the storage array.\n ", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#105 should use cached array length instead of referencing `length` member of the storage array.\n ", - "first_markdown_element": "", - "id": "2ff6144814e406cadadd58712f5a7a8ef6ee169da06660d590e7bee37759fc98", - "check": "cache-array-length", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#59 should use cached array length instead of referencing `length` member of the storage array.\n ", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#59 should use cached array length instead of referencing `length` member of the storage array.\n ", - "first_markdown_element": "", - "id": "48a6388cf2193fdd780ea86cb3e588dfd3276182e209f3f2807d9927a5ba25bc", - "check": "cache-array-length", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#47 should use cached array length instead of referencing `length` member of the storage array.\n ", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#47 should use cached array length instead of referencing `length` member of the storage array.\n ", - "first_markdown_element": "", - "id": "562b7ae618977ea1d0a232d8af5edd81ce404b6844e864d0c4ab162a88142c71", - "check": "cache-array-length", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#112 should use cached array length instead of referencing `length` member of the storage array.\n ", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#112 should use cached array length instead of referencing `length` member of the storage array.\n ", - "first_markdown_element": "", - "id": "8f1aa2da0763f65179e90a2b96d7feb68c99aab60f227a5da8dad2f12069f047", - "check": "cache-array-length", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#88 should use cached array length instead of referencing `length` member of the storage array.\n ", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#88 should use cached array length instead of referencing `length` member of the storage array.\n ", - "first_markdown_element": "", - "id": "9c988bc3f6748fadb8527c9eea53e3d06f5f4e7b2a0c7c70993c4af758bbba47", - "check": "cache-array-length", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#78 should use cached array length instead of referencing `length` member of the storage array.\n ", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#78 should use cached array length instead of referencing `length` member of the storage array.\n ", - "first_markdown_element": "", - "id": "a1c39b4ae47535f3354d0bf26ea67d3b524efb94a3bdb2f503bda245471ee451", - "check": "cache-array-length", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [], - "description": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#16 should use cached array length instead of referencing `length` member of the storage array.\n ", - "markdown": "Loop condition at tests/detectors/cache-array-length/0.8.17/CacheArrayLength.sol#16 should use cached array length instead of referencing `length` member of the storage array.\n ", - "first_markdown_element": "", - "id": "c57b54ebb07e5114ccb8c124fa3971b9385d5252264f2bf2acbe131b3a986aa8", - "check": "cache-array-length", - "impact": "Optimization", - "confidence": "High" - } - ] -] \ No newline at end of file From 1ebf7d27c78a0923453f3d28da63537f91c8b4a6 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 4 May 2023 10:14:25 -0500 Subject: [PATCH 126/220] update pip audit action to pypa and bump version --- .github/workflows/pip-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml index e334ff4fe..20367787d 100644 --- a/.github/workflows/pip-audit.yml +++ b/.github/workflows/pip-audit.yml @@ -34,6 +34,6 @@ jobs: python -m pip install . - name: Run pip-audit - uses: trailofbits/gh-action-pip-audit@v0.0.4 + uses: pypa/gh-action-pip-audit@v1.0.7 with: virtual-environment: /tmp/pip-audit-env From 2d65116392d6152e6c747012ddc51d9099975d71 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 4 May 2023 21:45:13 -0500 Subject: [PATCH 127/220] reduce false positives for incorrect-equality on struct fields --- slither/core/declarations/custom_error.py | 4 +-- .../statements/incorrect_strict_equality.py | 14 ++++++---- slither/utils/type.py | 14 ++++++++++ .../0.7.6/incorrect_equality.sol | 24 ++++++++++++++++++ .../0.7.6/incorrect_equality.sol-0.7.6.zip | Bin 8237 -> 10221 bytes 5 files changed, 49 insertions(+), 7 deletions(-) diff --git a/slither/core/declarations/custom_error.py b/slither/core/declarations/custom_error.py index 7e78748c6..8ed943d94 100644 --- a/slither/core/declarations/custom_error.py +++ b/slither/core/declarations/custom_error.py @@ -1,8 +1,8 @@ from typing import List, TYPE_CHECKING, Optional, Type -from slither.core.solidity_types import UserDefinedType from slither.core.source_mapping.source_mapping import SourceMapping from slither.core.variables.local_variable import LocalVariable +from slither.utils.type import is_underlying_type_address if TYPE_CHECKING: from slither.core.compilation_unit import SlitherCompilationUnit @@ -46,7 +46,7 @@ class CustomError(SourceMapping): # pylint: disable=import-outside-toplevel from slither.core.declarations import Contract - if isinstance(t, UserDefinedType) and isinstance(t.type, Contract): + if is_underlying_type_address(t): return "address" return str(t) diff --git a/slither/detectors/statements/incorrect_strict_equality.py b/slither/detectors/statements/incorrect_strict_equality.py index bd34d61b1..ae06d7bf3 100644 --- a/slither/detectors/statements/incorrect_strict_equality.py +++ b/slither/detectors/statements/incorrect_strict_equality.py @@ -31,6 +31,7 @@ from slither.slithir.variables.constant import Constant from slither.slithir.variables.local_variable import LocalIRVariable from slither.slithir.variables.temporary_ssa import TemporaryVariableSSA from slither.utils.output import Output +from slither.utils.type import is_underlying_type_address class IncorrectStrictEquality(AbstractDetector): @@ -77,8 +78,13 @@ contract Crowdsale{ """ Comparing addresses strictly should not be flagged. """ - addr = ElementaryType("address") - return ir.variable_left.type != addr or ir.variable_right.type != addr + + if is_underlying_type_address(ir.variable_left.type) and is_underlying_type_address( + ir.variable_right.type + ): + return False + + return True @staticmethod def is_any_tainted( @@ -116,7 +122,6 @@ contract Crowdsale{ ): taints.append(ir.lvalue) if isinstance(ir, HighLevelCall): - # print(ir.function.full_name) if ( isinstance(ir.function, Function) and ir.function.full_name == "balanceOf(address)" @@ -133,7 +138,6 @@ contract Crowdsale{ if isinstance(ir, Assignment): if ir.rvalue in self.sources_taint: taints.append(ir.lvalue) - return taints # Retrieve all tainted (node, function) pairs @@ -155,10 +159,10 @@ contract Crowdsale{ # Filter to only tainted equality (==) comparisons if ( self.is_direct_comparison(ir) + # Filter out address comparisons which may occur due to lack of field sensitivity in data dependency and self.is_not_comparing_addresses(ir) and self.is_any_tainted(ir.used, taints, func) ): - # if func not in results: results[func] = [] results[func].append(node) diff --git a/slither/utils/type.py b/slither/utils/type.py index 1674999aa..916cf42b5 100644 --- a/slither/utils/type.py +++ b/slither/utils/type.py @@ -197,3 +197,17 @@ def export_return_type_from_variable( return ret return [variable_or_type.type] + + +def is_underlying_type_address(t: "Type") -> bool: + """ + Return true if the underlying type is an address + i.e. if the type is an address or a contract + """ + from slither.core.declarations.contract import Contract + + if t == ElementaryType("address"): + return True + if isinstance(t, UserDefinedType) and isinstance(t.type, Contract): + return True + return False diff --git a/tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol b/tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol index b2e4c2f14..58b6b593e 100644 --- a/tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol +++ b/tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol @@ -134,3 +134,27 @@ contract TestSolidityKeyword{ } +interface Receiver { + +} +contract A { + mapping(address => Info) data; + + struct Info { + uint a; + address b; + uint c; + } + function good(address b) public payable { + data[msg.sender] = Info(block.timestamp, b, msg.value); + if (data[msg.sender].b == address(0)) { + payable(msg.sender).transfer(data[msg.sender].c); + } + } + function good2(address b) public payable { + data[msg.sender] = Info(block.timestamp, b, msg.value); + if (Receiver(data[msg.sender].b) == Receiver(address(0))) { + payable(msg.sender).transfer(data[msg.sender].c); + } + } +} \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol-0.7.6.zip b/tests/e2e/detectors/test_data/incorrect-equality/0.7.6/incorrect_equality.sol-0.7.6.zip index a7fbdc6b68cb2bde137d455418999079da2d40b7..99de07e26a1870ec4bfdaaa471a8fe3722aa684a 100644 GIT binary patch delta 9990 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 Date: Thu, 4 May 2023 22:01:08 -0500 Subject: [PATCH 128/220] do not detect incorrect-shift when rhs is constant --- .../assembly/shift_parameter_mixup.py | 2 +- ...xup_0_7_6_shift_parameter_mixup_sol__0.txt | 2 +- .../0.7.6/shift_parameter_mixup.sol | 3 ++- .../0.7.6/shift_parameter_mixup.sol-0.7.6.zip | Bin 1468 -> 1557 bytes 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/slither/detectors/assembly/shift_parameter_mixup.py b/slither/detectors/assembly/shift_parameter_mixup.py index a4169499a..5bfefb4c9 100644 --- a/slither/detectors/assembly/shift_parameter_mixup.py +++ b/slither/detectors/assembly/shift_parameter_mixup.py @@ -52,7 +52,7 @@ The shift statement will right-shift the constant 8 by `a` bits""" BinaryType.LEFT_SHIFT, BinaryType.RIGHT_SHIFT, ]: - if isinstance(ir.variable_left, Constant): + if isinstance(ir.variable_left, Constant) and not isinstance(ir.variable_right, Constant): info: DETECTOR_INFO = [ f, " contains an incorrect shift operation: ", diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_7_6_shift_parameter_mixup_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_7_6_shift_parameter_mixup_sol__0.txt index 08fdbe1c6..1c4206ea0 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_7_6_shift_parameter_mixup_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ShiftParameterMixup_0_7_6_shift_parameter_mixup_sol__0.txt @@ -1,2 +1,2 @@ -C.f() (tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#3-7) contains an incorrect shift operation: a = 8 >> a (tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#5) +C.f() (tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#3-8) contains an incorrect shift operation: a = 8 >> a (tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol#5) diff --git a/tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol b/tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol index 89a9210ad..11a2af9ae 100644 --- a/tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol +++ b/tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol @@ -1,8 +1,9 @@ contract C { - function f() internal returns (uint a) { + function f() internal returns (uint a, uint b) { assembly { a := shr(a, 8) + b := shl(248, 0xff) } } } \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol-0.7.6.zip b/tests/e2e/detectors/test_data/incorrect-shift/0.7.6/shift_parameter_mixup.sol-0.7.6.zip index 7f833af857b0e8cac358ec9a83882debe1d333dc..e1cce4a17341c1df74817f1d973dffc2c27c7e16 100644 GIT binary patch delta 1239 zcmV;|1StEw3zZBQP)h>@KL7#%4ghDbq*hW?iU3&!006`mu^0sbf7K!=V7QoD1pOUb z;#`h#`LjS|K8Ti2v6Xb+^&SF-rsAN-J}fdQ<4ehp*pt$_!8Rl7wfsJ>uMaKn4`>@Z z)x=k#di^mxeF%4dss_}8dX%CJ8fW)2?60M*%dpX?JCOpS#1mq1pXZAt$#xU?bjN6% zAR82oz?L$Hx}uMhe`aU5Jf8p~Ra^id__c>#XlB6jgtgQn_ZLs>$w)xHB`&YX;xeaq zr@#3D9U8dI-(gY94QRE;M{$1dfBtqZWzgH0yy5ljr)D~;qS_kRy;Pg}|0}bM@B=jzLUaeC^CG4*V9IH~eV-T( zV(5#(w~F56f~035Oh@)=o3YG(yUuYK=!IC%+_<#_#KID(2(M2k`ll-x7ZpgYZar+^ zG~*wM#THJCk3HG1c;YF~^FmQ&D*z2%|1l!oe^@Ubo$-x9|EK}D@-7pJTTb~w(#)r^ z0o1kN3+e57wpj2$yI<;>EFOhHPxA3SV!C1C!99geeEmW=3T&&L2vp8;OrcA)vda+! zpZ(xizHF1)K!sqzRr>~Av^0_U?PU)8I{%xNeBm6-{~Ff!sTSw?w+_m(wIvT$^(xHN ze@n|?oH|TPWP&X1zq7fgsdPup-(!vzi$l6bjMM+i3AQIdTT2bs{9Fp5;18Jlh<_0 zE;*uKvarc~H74YKd8fx;?Qi%$?PZu*y`cT8xx@o~_#6hCZe{TqIY+BWlJII7Ds(?k zsyHBV$|jAFfBbMavQSF_0zU&k00ICG0B5hHR#H@o09ge90K^uPWd%_Nqy+!~003A( BS3dv% delta 1155 zcmV-}1bq9I47>{)P)h>@KL7#%4ggAxcUDg-taJbc005N|001qM&jm1%OVWSTO;SK| zzW27RLDuq%fajjF(oVr2i>rg67g$U?`hvVPUjS}-#^k2c+iH0wnWy*{+EuOVwk8m> zVbb$tf-Ug4%lkTz7(>ZMTBZ&k;F|b3w{~shPKnJW;~y3b#kO?LN-J)_^qVDw1Ve=% zru0P9*Xxndxk4cDU&oq*(nWvqVH?}!flD{6OZSc6Yv<+9T*lXCVCRd9SDPaK33|() zUo(VdWn`ZDfK{FLrGnq?w)Veja*FZToxnIBMNBUGF(G z(L-mv<;*9lUW!#2haumA%kn1rAY4PmF8x-b@{kx zZIznx0x>FX+$1q}DwE@tFBJ~xJRtc#5Wj1FM{|_w*f`oF$h?EjQKf3_5E$r0Nw_Mj z4=_F`r1@+0$>rCUFhqY9Z?s>`5%LA*>hYtVlVr!3RYDUUU+^s8QUt_2;JxfdH2vTC+Qq*v1EI0(7Nj7`l3FHqD}mkb<=*AhCNQydz6x|R@z-^8(lE+y z*kwdhWy64@$w7|AcRF$$Y1e?6X;CadLl2&=_npUS=UcMq?od zxbB>L*H0EK|1LWcry}&lh5wQJsgHeT<6E3|a!Szv3F+}8jE4AdtY`4vzPmz+^a?8g zcv)TD<@K_%7;9TwpP}qKA)7bM;^f+|KI8kE!7vLO7YjU=ngSMtweh5+iVH~Mgg5xu zi#8>Ay0=#JDn5Tv(Fw^jsJ?*rRC!kP9qNt%7`wIDSH|kQ?F;{~g0|1jCByL}QzMly zy|bV^qom6gCrWplhj$ZcD8mUCa-OxWwsYH&T`4ijv5fvqO~aX?q@sM?Hv0HSyzyT+wA zfS|EO>y*;c*HbAwoyD)i0cqT-vb^0IHIrhxd^y*&68*Mo@&W$gF_X+>SH z2?2&LN>YDgje|=r-vhXsT;mTh4eek21Yg~HiwKp0=;)di#MRvrRAY@Xqc>Ak@g-TV zFC>3E$vxbns(rRsW{q$vaX-+cX+u$ Date: Thu, 4 May 2023 22:10:19 -0500 Subject: [PATCH 129/220] lint --- slither/detectors/assembly/shift_parameter_mixup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/slither/detectors/assembly/shift_parameter_mixup.py b/slither/detectors/assembly/shift_parameter_mixup.py index 5bfefb4c9..1f6a878e2 100644 --- a/slither/detectors/assembly/shift_parameter_mixup.py +++ b/slither/detectors/assembly/shift_parameter_mixup.py @@ -52,7 +52,9 @@ The shift statement will right-shift the constant 8 by `a` bits""" BinaryType.LEFT_SHIFT, BinaryType.RIGHT_SHIFT, ]: - if isinstance(ir.variable_left, Constant) and not isinstance(ir.variable_right, Constant): + if isinstance(ir.variable_left, Constant) and not isinstance( + ir.variable_right, Constant + ): info: DETECTOR_INFO = [ f, " contains an incorrect shift operation: ", From 92b2147cbea9ae995325f2b53ab6e4c9aaf89fa1 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 4 May 2023 22:11:28 -0500 Subject: [PATCH 130/220] lint --- slither/utils/type.py | 1 + 1 file changed, 1 insertion(+) diff --git a/slither/utils/type.py b/slither/utils/type.py index 916cf42b5..a6b640202 100644 --- a/slither/utils/type.py +++ b/slither/utils/type.py @@ -204,6 +204,7 @@ def is_underlying_type_address(t: "Type") -> bool: Return true if the underlying type is an address i.e. if the type is an address or a contract """ + # pylint: disable=import-outside-toplevel from slither.core.declarations.contract import Contract if t == ElementaryType("address"): From abcef3015ad90c76830912965212d2e188b5e848 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 4 May 2023 22:14:28 -0500 Subject: [PATCH 131/220] remove unused import --- slither/core/declarations/custom_error.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/slither/core/declarations/custom_error.py b/slither/core/declarations/custom_error.py index 8ed943d94..234873eac 100644 --- a/slither/core/declarations/custom_error.py +++ b/slither/core/declarations/custom_error.py @@ -43,9 +43,6 @@ class CustomError(SourceMapping): @staticmethod def _convert_type_for_solidity_signature(t: Optional[Type]) -> str: - # pylint: disable=import-outside-toplevel - from slither.core.declarations import Contract - if is_underlying_type_address(t): return "address" return str(t) From 2002312b9fce061251cf1e6f7b6ec61f1936169f Mon Sep 17 00:00:00 2001 From: daog1 Date: Fri, 5 May 2023 12:39:09 +0800 Subject: [PATCH 132/220] fix abi decode --- slither/tools/read_storage/read_storage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/tools/read_storage/read_storage.py b/slither/tools/read_storage/read_storage.py index 387aa619a..2947081da 100644 --- a/slither/tools/read_storage/read_storage.py +++ b/slither/tools/read_storage/read_storage.py @@ -441,7 +441,7 @@ class SlitherReadStorage: if "int" in key_type: # without this eth_utils encoding fails key = int(key) key = coerce_type(key_type, key) - slot = keccak(encode([key_type, "uint256"], [key, decode("uint256", slot)])) + slot = keccak(encode([key_type, "uint256"], [key, decode(["uint256"], slot)[0]])) if isinstance(target_variable_type.type_to, UserDefinedType) and isinstance( target_variable_type.type_to.type, Structure From 7fc4d8714c5dbb48a725b3c56799b5bb151924bc Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Fri, 5 May 2023 09:56:47 -0500 Subject: [PATCH 133/220] remove modulo binop from `can_be_checked_for_overflow` --- slither/slithir/operations/binary.py | 1 - 1 file changed, 1 deletion(-) diff --git a/slither/slithir/operations/binary.py b/slither/slithir/operations/binary.py index d1355a965..06eb172a7 100644 --- a/slither/slithir/operations/binary.py +++ b/slither/slithir/operations/binary.py @@ -94,7 +94,6 @@ class BinaryType(Enum): return self in [ BinaryType.POWER, BinaryType.MULTIPLICATION, - BinaryType.MODULO, BinaryType.ADDITION, BinaryType.SUBTRACTION, BinaryType.DIVISION, From fa8087ab0651acb48e5757390c9be7216cdfa74c Mon Sep 17 00:00:00 2001 From: Simone Date: Sat, 6 May 2023 15:20:57 +0200 Subject: [PATCH 134/220] Parse assembly in modifier --- slither/solc_parsing/declarations/modifier.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/slither/solc_parsing/declarations/modifier.py b/slither/solc_parsing/declarations/modifier.py index ea7af00b3..c4c5c7177 100644 --- a/slither/solc_parsing/declarations/modifier.py +++ b/slither/solc_parsing/declarations/modifier.py @@ -87,6 +87,9 @@ class ModifierSolc(FunctionSolc): for node in self._node_to_nodesolc.values(): node.analyze_expressions(self) + for yul_parser in self._node_to_yulobject.values(): + yul_parser.analyze_expressions() + self._rewrite_ternary_as_if_else() self._remove_alone_endif() From 6e781e1c58a25c3b38126faa3c526cd3404ac305 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Sat, 6 May 2023 10:36:09 -0500 Subject: [PATCH 135/220] update slither-flat test cases, run solc out its output --- examples/flat/a.sol | 10 ++++++++-- examples/flat/b.sol | 13 ++++++++++++- scripts/ci_test_flat.sh | 10 +++++++++- slither/tools/flattening/export/export.py | 2 +- slither/tools/flattening/flattening.py | 2 +- 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/examples/flat/a.sol b/examples/flat/a.sol index d252e04ba..4fa9c7549 100644 --- a/examples/flat/a.sol +++ b/examples/flat/a.sol @@ -1,3 +1,9 @@ -contract A{ +pragma solidity 0.8.19; -} +error RevertIt(); + +contract Example { + function reverts() external pure { + revert RevertIt(); + } +} \ No newline at end of file diff --git a/examples/flat/b.sol b/examples/flat/b.sol index 74b4d78ce..edbd90225 100644 --- a/examples/flat/b.sol +++ b/examples/flat/b.sol @@ -1,5 +1,16 @@ import "./a.sol"; -contract B is A{ +pragma solidity 0.8.19; +enum B { + a, + b } + +contract T { + Example e = new Example(); + function b() public returns(uint) { + B b = B.a; + return 4; + } +} \ No newline at end of file diff --git a/scripts/ci_test_flat.sh b/scripts/ci_test_flat.sh index e3a837a03..b47dd510b 100755 --- a/scripts/ci_test_flat.sh +++ b/scripts/ci_test_flat.sh @@ -1,6 +1,8 @@ #!/usr/bin/env bash +shopt -s extglob -### Test slither-prop +### Test slither-flat +solc-select use 0.8.19 --always-install cd examples/flat || exit 1 @@ -8,5 +10,11 @@ if ! slither-flat b.sol; then echo "slither-flat failed" exit 1 fi + +SUFFIX = '@(sol)' +if ! solc "crytic-export/flattening/"*$SUFFIX; then + echo "solc failed on flattened files" + exit 1 +fi exit 0 diff --git a/slither/tools/flattening/export/export.py b/slither/tools/flattening/export/export.py index e9b4552ef..8b8ce7355 100644 --- a/slither/tools/flattening/export/export.py +++ b/slither/tools/flattening/export/export.py @@ -15,7 +15,7 @@ ZIP_TYPES_ACCEPTED = { Export = namedtuple("Export", ["filename", "content"]) -logger = logging.getLogger("Slither") +logger = logging.getLogger("Slither-flat") def save_to_zip(files: List[Export], zip_filename: str, zip_type: str = "lzma"): diff --git a/slither/tools/flattening/flattening.py b/slither/tools/flattening/flattening.py index 7603f5e93..55e1af21d 100644 --- a/slither/tools/flattening/flattening.py +++ b/slither/tools/flattening/flattening.py @@ -24,7 +24,7 @@ from slither.tools.flattening.export.export import ( save_to_disk, ) -logger = logging.getLogger("Slither-flattening") +logger = logging.getLogger("Slither-flat") logger.setLevel(logging.INFO) # index: where to start From 6e08172e8bcf8973dbf4ec7810a14c1b0851d754 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Sat, 6 May 2023 10:46:52 -0500 Subject: [PATCH 136/220] lint bash --- scripts/ci_test_flat.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci_test_flat.sh b/scripts/ci_test_flat.sh index b47dd510b..0d9185171 100755 --- a/scripts/ci_test_flat.sh +++ b/scripts/ci_test_flat.sh @@ -11,7 +11,7 @@ if ! slither-flat b.sol; then exit 1 fi -SUFFIX = '@(sol)' +SUFFIX="@(sol)" if ! solc "crytic-export/flattening/"*$SUFFIX; then echo "solc failed on flattened files" exit 1 From 6649f14dddba1325ae698c2e49d6e13d4183b45b Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Sat, 6 May 2023 10:51:28 -0500 Subject: [PATCH 137/220] run markdowlint --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7017c7802..1d1a9497f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -79,11 +79,11 @@ How do I know what kind of test(s) to write? For each new detector, at least one regression tests must be present. -1. Create a folder in `tests/e2e/detectors/test_data` with the detector's argument name. +1. Create a folder in `tests/e2e/detectors/test_data` with the detector's argument name. 2. Create a test contract in `tests/e2e/detectors/test_data//`. 3. Update `ALL_TEST` in `tests/e2e/detectors/test_detectors.py` -4. Run `python tests/e2e/detectors/test_detectors.py --compile` to create a zip file of the compilation artifacts. -5. `pytest tests/e2e/detectors/test_detectors.py --insta update-new`. This will generate a snapshot of the detector output in `tests/e2e/detectors/snapshots/`. If updating an existing detector, run `pytest tests/e2e/detectors/test_detectors.py --insta review` and accept or reject the updates. +4. Run `python tests/e2e/detectors/test_detectors.py --compile` to create a zip file of the compilation artifacts. +5. `pytest tests/e2e/detectors/test_detectors.py --insta update-new`. This will generate a snapshot of the detector output in `tests/e2e/detectors/snapshots/`. If updating an existing detector, run `pytest tests/e2e/detectors/test_detectors.py --insta review` and accept or reject the updates. 6. Run `pytest tests/e2e/detectors/test_detectors.py` to ensure everything worked. Then, add and commit the files to git. > ##### Helpful commands for detector tests From 92c06c4f4a0299ed6a374e91aab3a5ef71b71af2 Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Mon, 8 May 2023 14:08:27 -0400 Subject: [PATCH 138/220] add tool slither-interface --- scripts/ci_test_interface.sh | 93 ++++++++++++++++++++++ setup.py | 1 + slither/tools/interface/__init__.py | 0 slither/tools/interface/__main__.py | 105 +++++++++++++++++++++++++ tests/tools/interface/ContractMock.sol | 33 ++++++++ tests/tools/interface/test_1.sol | 20 +++++ tests/tools/interface/test_2.sol | 19 +++++ tests/tools/interface/test_3.sol | 19 +++++ tests/tools/interface/test_4.sol | 15 ++++ tests/tools/interface/test_5.sol | 16 ++++ tests/tools/interface/test_6.sol | 18 +++++ tests/tools/interface/test_7.sol | 16 ++++ 12 files changed, 355 insertions(+) create mode 100644 scripts/ci_test_interface.sh create mode 100644 slither/tools/interface/__init__.py create mode 100644 slither/tools/interface/__main__.py create mode 100644 tests/tools/interface/ContractMock.sol create mode 100644 tests/tools/interface/test_1.sol create mode 100644 tests/tools/interface/test_2.sol create mode 100644 tests/tools/interface/test_3.sol create mode 100644 tests/tools/interface/test_4.sol create mode 100644 tests/tools/interface/test_5.sol create mode 100644 tests/tools/interface/test_6.sol create mode 100644 tests/tools/interface/test_7.sol diff --git a/scripts/ci_test_interface.sh b/scripts/ci_test_interface.sh new file mode 100644 index 000000000..04ce8ab09 --- /dev/null +++ b/scripts/ci_test_interface.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash + +### Test slither-interface + +DIR_TESTS="tests/tools/interface" + +#Test 1 - Etherscan target +slither-interface WETH9 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 +DIFF=$(diff crytic-export/interfaces/IWETH9.sol "$DIR_TESTS/test_1.sol") +if [ "$DIFF" != "" ] +then + echo "slither-interface test 1 failed" + cat test_1.sol + echo "" + cat "$DIR_TESTS/test_1.sol" + exit 255 +fi + + +#Test 2 - Local file target +slither-interface Mock tests/tools/interface/ContractMock.sol +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_2.sol") +if [ "$DIFF" != "" ] +then + echo "slither-interface test 2 failed" + cat test_2.sol + echo "" + cat "$DIR_TESTS/test_2.sol" + exit 255 +fi + + +#Test 3 - unroll structs +slither-interface Mock tests/tools/interface/ContractMock.sol --unroll-structs +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_3.sol") +if [ "$DIFF" != "" ] +then + echo "slither-interface test 3 failed" + cat test_3.sol + echo "" + cat "$DIR_TESTS/test_3.sol" + exit 255 +fi + +#Test 4 - exclude structs +slither-interface Mock tests/tools/interface/ContractMock.sol --exclude-structs +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_4.sol") +if [ "$DIFF" != "" ] +then + echo "slither-interface test 4 failed" + cat test_4.sol + echo "" + cat "$DIR_TESTS/test_4.sol" + exit 255 +fi + +#Test 5 - exclude errors +slither-interface Mock tests/tools/interface/ContractMock.sol --exclude-errors +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_5.sol") +if [ "$DIFF" != "" ] +then + echo "slither-interface test 5 failed" + cat test_5.sol + echo "" + cat "$DIR_TESTS/test_5.sol" + exit 255 +fi + +#Test 6 - exclude enums +slither-interface Mock tests/tools/interface/ContractMock.sol --exclude-enums +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_6.sol") +if [ "$DIFF" != "" ] +then + echo "slither-interface test 6 failed" + cat test_6.sol + echo "" + cat "$DIR_TESTS/test_6.sol" + exit 255 +fi + +#Test 7 - exclude events +slither-interface Mock tests/tools/interface/ContractMock.sol --exclude-events +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_7.sol") +if [ "$DIFF" != "" ] +then + echo "slither-interface test 7 failed" + cat test_7.sol + echo "" + cat "$DIR_TESTS/test_7.sol" + exit 255 +fi + +rm -r crytic-export \ No newline at end of file diff --git a/setup.py b/setup.py index 27213481a..c2dc8dcfb 100644 --- a/setup.py +++ b/setup.py @@ -61,6 +61,7 @@ setup( "slither-read-storage = slither.tools.read_storage.__main__:main", "slither-doctor = slither.tools.doctor.__main__:main", "slither-documentation = slither.tools.documentation.__main__:main", + "slither-interface = slither.tools.interface.__main__:main", ] }, ) diff --git a/slither/tools/interface/__init__.py b/slither/tools/interface/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/slither/tools/interface/__main__.py b/slither/tools/interface/__main__.py new file mode 100644 index 000000000..e56c4b3eb --- /dev/null +++ b/slither/tools/interface/__main__.py @@ -0,0 +1,105 @@ +import argparse +import logging +from pathlib import Path + +from crytic_compile import cryticparser + +from slither import Slither +from slither.utils.code_generation import generate_interface + +logging.basicConfig() +logger = logging.getLogger("Slither-Interface") +logger.setLevel(logging.INFO) + + +def parse_args() -> argparse.Namespace: + """ + Parse the underlying arguments for the program. + :return: Returns the arguments for the program. + """ + parser = argparse.ArgumentParser( + description="Generates code for a Solidity interface from contract", + usage=("slither-interface "), + ) + + parser.add_argument( + "contract_source", + help="The name of the contract (case sensitive) followed by the deployed contract address if verified on etherscan or project directory/filename for local contracts.", + nargs="+", + ) + + parser.add_argument( + "--unroll-structs", + help="Whether to use structures' underlying types instead of the user-defined type", + default=False, + action="store_true", + ) + + parser.add_argument( + "--exclude-events", + help="Excludes event signatures in the interface", + default=False, + action="store_true", + ) + + parser.add_argument( + "--exclude-errors", + help="Excludes custom error signatures in the interface", + default=False, + action="store_true", + ) + + parser.add_argument( + "--exclude-enums", + help="Excludes enum definitions in the interface", + default=False, + action="store_true", + ) + + parser.add_argument( + "--exclude-structs", + help="Exclude struct definitions in the interface", + default=False, + action="store_true", + ) + + cryticparser.init(parser) + + return parser.parse_args() + + +def main() -> None: + args = parse_args() + + contract_name, target = args.contract_source + slither = Slither(target, **vars(args)) + + _contract = slither.get_contract_from_name(contract_name)[0] + + interface = generate_interface( + contract=_contract, + unroll_structs=args.unroll_structs, + include_events=not args.exclude_events, + include_errors=not args.exclude_errors, + include_enums=not args.exclude_enums, + include_structs=not args.exclude_structs, + ) + + # add version pragma + interface = ( + f"pragma solidity {_contract.compilation_unit.pragma_directives[0].version};\n\n" + + interface + ) + + # write interface to file + export = Path("crytic-export", "interfaces") + export.mkdir(parents=True, exist_ok=True) + filename = f"I{contract_name}.sol" + path = Path(export, filename) + logger.info(f" Interface exported to {path}") + with open(path, "w", encoding="utf8") as f: + f.write(interface) + + +if __name__ == "__main__": + main() diff --git a/tests/tools/interface/ContractMock.sol b/tests/tools/interface/ContractMock.sol new file mode 100644 index 000000000..e37303543 --- /dev/null +++ b/tests/tools/interface/ContractMock.sol @@ -0,0 +1,33 @@ +pragma solidity ^0.8.0; + +contract Mock { + + error Error1(); + error Error2(); + error Error3(); + + event Event1(); + event Event2(address param); + event Event3(uint256 num1, uint72 num2); + + struct Foo { + uint256 bar; + address baz; + } + + enum Status { + Active, + Pending, + Canceled + } + + Foo public foo; + + Status public status; + + function function1() public pure returns (address){ + return address(0); + } + + +} \ No newline at end of file diff --git a/tests/tools/interface/test_1.sol b/tests/tools/interface/test_1.sol new file mode 100644 index 000000000..d306edeca --- /dev/null +++ b/tests/tools/interface/test_1.sol @@ -0,0 +1,20 @@ +pragma solidity ^0.4.18; + +interface IWETH9 { + event Approval(address, address, uint256); + event Transfer(address, address, uint256); + event Deposit(address, uint256); + event Withdrawal(address, uint256); + function name() external returns (string memory); + function symbol() external returns (string memory); + function decimals() external returns (uint8); + function balanceOf(address) external returns (uint256); + function allowance(address,address) external returns (uint256); + function deposit() external payable; + function withdraw(uint256) external; + function totalSupply() external view returns (uint256); + function approve(address,uint256) external returns (bool); + function transfer(address,uint256) external returns (bool); + function transferFrom(address,address,uint256) external returns (bool); +} + diff --git a/tests/tools/interface/test_2.sol b/tests/tools/interface/test_2.sol new file mode 100644 index 000000000..661582608 --- /dev/null +++ b/tests/tools/interface/test_2.sol @@ -0,0 +1,19 @@ +pragma solidity ^0.8.0; + +interface IMock { + event Event1(); + event Event2(address); + event Event3(uint256, uint72); + error Error1(); + error Error2(); + error Error3(); + enum Status { Active, Pending, Canceled } + struct Foo { + uint256 bar; + address baz; + } + function foo() external returns (Foo memory); + function status() external returns (Status); + function function1() external pure returns (address); +} + diff --git a/tests/tools/interface/test_3.sol b/tests/tools/interface/test_3.sol new file mode 100644 index 000000000..a1be364bc --- /dev/null +++ b/tests/tools/interface/test_3.sol @@ -0,0 +1,19 @@ +pragma solidity ^0.8.0; + +interface IMock { + event Event1(); + event Event2(address); + event Event3(uint256, uint72); + error Error1(); + error Error2(); + error Error3(); + enum Status { Active, Pending, Canceled } + struct Foo { + uint256 bar; + address baz; + } + function foo() external returns (uint256, address); + function status() external returns (uint8); + function function1() external pure returns (address); +} + diff --git a/tests/tools/interface/test_4.sol b/tests/tools/interface/test_4.sol new file mode 100644 index 000000000..063168287 --- /dev/null +++ b/tests/tools/interface/test_4.sol @@ -0,0 +1,15 @@ +pragma solidity ^0.8.0; + +interface IMock { + event Event1(); + event Event2(address); + event Event3(uint256, uint72); + error Error1(); + error Error2(); + error Error3(); + enum Status { Active, Pending, Canceled } + function foo() external returns (Foo memory); + function status() external returns (Status); + function function1() external pure returns (address); +} + diff --git a/tests/tools/interface/test_5.sol b/tests/tools/interface/test_5.sol new file mode 100644 index 000000000..9328a1107 --- /dev/null +++ b/tests/tools/interface/test_5.sol @@ -0,0 +1,16 @@ +pragma solidity ^0.8.0; + +interface IMock { + event Event1(); + event Event2(address); + event Event3(uint256, uint72); + enum Status { Active, Pending, Canceled } + struct Foo { + uint256 bar; + address baz; + } + function foo() external returns (Foo memory); + function status() external returns (Status); + function function1() external pure returns (address); +} + diff --git a/tests/tools/interface/test_6.sol b/tests/tools/interface/test_6.sol new file mode 100644 index 000000000..5826543ee --- /dev/null +++ b/tests/tools/interface/test_6.sol @@ -0,0 +1,18 @@ +pragma solidity ^0.8.0; + +interface IMock { + event Event1(); + event Event2(address); + event Event3(uint256, uint72); + error Error1(); + error Error2(); + error Error3(); + struct Foo { + uint256 bar; + address baz; + } + function foo() external returns (Foo memory); + function status() external returns (Status); + function function1() external pure returns (address); +} + diff --git a/tests/tools/interface/test_7.sol b/tests/tools/interface/test_7.sol new file mode 100644 index 000000000..621273d31 --- /dev/null +++ b/tests/tools/interface/test_7.sol @@ -0,0 +1,16 @@ +pragma solidity ^0.8.0; + +interface IMock { + error Error1(); + error Error2(); + error Error3(); + enum Status { Active, Pending, Canceled } + struct Foo { + uint256 bar; + address baz; + } + function foo() external returns (Foo memory); + function status() external returns (Status); + function function1() external pure returns (address); +} + From 3861ea3e0439e246bf240e60b998d4dce38e7975 Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Tue, 9 May 2023 09:23:23 -0400 Subject: [PATCH 139/220] add interface to ci.yml --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 96a0a59c2..09582eed9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,6 +36,7 @@ jobs: "etherscan", "find_paths", "flat", + "interface", "kspec", "printers", # "prop" From 279f1cb61cd8b3a788b8929ac613223bb1e28e96 Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Tue, 9 May 2023 15:29:31 -0400 Subject: [PATCH 140/220] resolve pragma version causing tests to fail --- scripts/ci_test_interface.sh | 2 ++ tests/tools/interface/ContractMock.sol | 2 +- tests/tools/interface/test_2.sol | 2 +- tests/tools/interface/test_3.sol | 2 +- tests/tools/interface/test_4.sol | 2 +- tests/tools/interface/test_5.sol | 2 +- tests/tools/interface/test_6.sol | 2 +- tests/tools/interface/test_7.sol | 2 +- 8 files changed, 9 insertions(+), 7 deletions(-) diff --git a/scripts/ci_test_interface.sh b/scripts/ci_test_interface.sh index 04ce8ab09..05859eb47 100644 --- a/scripts/ci_test_interface.sh +++ b/scripts/ci_test_interface.sh @@ -4,6 +4,8 @@ DIR_TESTS="tests/tools/interface" +solc-select use 0.8.19 --always-install + #Test 1 - Etherscan target slither-interface WETH9 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 DIFF=$(diff crytic-export/interfaces/IWETH9.sol "$DIR_TESTS/test_1.sol") diff --git a/tests/tools/interface/ContractMock.sol b/tests/tools/interface/ContractMock.sol index e37303543..208e6f21a 100644 --- a/tests/tools/interface/ContractMock.sol +++ b/tests/tools/interface/ContractMock.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.8.0; +pragma solidity ^0.8.19; contract Mock { diff --git a/tests/tools/interface/test_2.sol b/tests/tools/interface/test_2.sol index 661582608..ac383459d 100644 --- a/tests/tools/interface/test_2.sol +++ b/tests/tools/interface/test_2.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.8.0; +pragma solidity ^0.8.19; interface IMock { event Event1(); diff --git a/tests/tools/interface/test_3.sol b/tests/tools/interface/test_3.sol index a1be364bc..87b26e6af 100644 --- a/tests/tools/interface/test_3.sol +++ b/tests/tools/interface/test_3.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.8.0; +pragma solidity ^0.8.19; interface IMock { event Event1(); diff --git a/tests/tools/interface/test_4.sol b/tests/tools/interface/test_4.sol index 063168287..06525c5c0 100644 --- a/tests/tools/interface/test_4.sol +++ b/tests/tools/interface/test_4.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.8.0; +pragma solidity ^0.8.19; interface IMock { event Event1(); diff --git a/tests/tools/interface/test_5.sol b/tests/tools/interface/test_5.sol index 9328a1107..26704c862 100644 --- a/tests/tools/interface/test_5.sol +++ b/tests/tools/interface/test_5.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.8.0; +pragma solidity ^0.8.19; interface IMock { event Event1(); diff --git a/tests/tools/interface/test_6.sol b/tests/tools/interface/test_6.sol index 5826543ee..d05d1fc2e 100644 --- a/tests/tools/interface/test_6.sol +++ b/tests/tools/interface/test_6.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.8.0; +pragma solidity ^0.8.19; interface IMock { event Event1(); diff --git a/tests/tools/interface/test_7.sol b/tests/tools/interface/test_7.sol index 621273d31..4e362f804 100644 --- a/tests/tools/interface/test_7.sol +++ b/tests/tools/interface/test_7.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.8.0; +pragma solidity ^0.8.19; interface IMock { error Error1(); From 1a369523498a26650af1b576adfc96bf0b164a7b Mon Sep 17 00:00:00 2001 From: Simone Date: Tue, 9 May 2023 23:21:01 +0200 Subject: [PATCH 141/220] Add test --- .../solc_parsing/test_data/assembly-all.sol | 9 ++++++++- .../compile/assembly-all.sol-0.4.0-legacy.zip | Bin 998 -> 1195 bytes .../compile/assembly-all.sol-0.4.1-legacy.zip | Bin 997 -> 1197 bytes .../assembly-all.sol-0.4.10-legacy.zip | Bin 1050 -> 1212 bytes .../assembly-all.sol-0.4.11-legacy.zip | Bin 1065 -> 1218 bytes .../assembly-all.sol-0.4.12-compact.zip | Bin 1202 -> 1428 bytes .../assembly-all.sol-0.4.12-legacy.zip | Bin 1187 -> 1383 bytes .../assembly-all.sol-0.4.13-compact.zip | Bin 1205 -> 1425 bytes .../assembly-all.sol-0.4.13-legacy.zip | Bin 1188 -> 1382 bytes .../assembly-all.sol-0.4.14-compact.zip | Bin 1207 -> 1432 bytes .../assembly-all.sol-0.4.14-legacy.zip | Bin 1190 -> 1391 bytes .../assembly-all.sol-0.4.15-compact.zip | Bin 1206 -> 1431 bytes .../assembly-all.sol-0.4.15-legacy.zip | Bin 1189 -> 1390 bytes .../assembly-all.sol-0.4.16-compact.zip | Bin 1220 -> 1441 bytes .../assembly-all.sol-0.4.16-legacy.zip | Bin 1205 -> 1405 bytes .../assembly-all.sol-0.4.17-compact.zip | Bin 1220 -> 1438 bytes .../assembly-all.sol-0.4.17-legacy.zip | Bin 1201 -> 1400 bytes .../assembly-all.sol-0.4.18-compact.zip | Bin 1226 -> 1447 bytes .../assembly-all.sol-0.4.18-legacy.zip | Bin 1208 -> 1408 bytes .../assembly-all.sol-0.4.19-compact.zip | Bin 1229 -> 1448 bytes .../assembly-all.sol-0.4.19-legacy.zip | Bin 1210 -> 1409 bytes .../compile/assembly-all.sol-0.4.2-legacy.zip | Bin 997 -> 1197 bytes .../assembly-all.sol-0.4.20-compact.zip | Bin 1229 -> 1449 bytes .../assembly-all.sol-0.4.20-legacy.zip | Bin 1210 -> 1410 bytes .../assembly-all.sol-0.4.21-compact.zip | Bin 1234 -> 1450 bytes .../assembly-all.sol-0.4.21-legacy.zip | Bin 1213 -> 1413 bytes .../assembly-all.sol-0.4.22-compact.zip | Bin 1261 -> 1476 bytes .../assembly-all.sol-0.4.22-legacy.zip | Bin 1238 -> 1442 bytes .../assembly-all.sol-0.4.23-compact.zip | Bin 1262 -> 1476 bytes .../assembly-all.sol-0.4.23-legacy.zip | Bin 1239 -> 1443 bytes .../assembly-all.sol-0.4.24-compact.zip | Bin 1262 -> 1476 bytes .../assembly-all.sol-0.4.24-legacy.zip | Bin 1240 -> 1442 bytes .../assembly-all.sol-0.4.25-compact.zip | Bin 1263 -> 1476 bytes .../assembly-all.sol-0.4.25-legacy.zip | Bin 1241 -> 1443 bytes .../assembly-all.sol-0.4.26-compact.zip | Bin 1260 -> 1475 bytes .../assembly-all.sol-0.4.26-legacy.zip | Bin 1237 -> 1442 bytes .../compile/assembly-all.sol-0.4.3-legacy.zip | Bin 998 -> 1199 bytes .../compile/assembly-all.sol-0.4.4-legacy.zip | Bin 999 -> 1196 bytes .../compile/assembly-all.sol-0.4.5-legacy.zip | Bin 982 -> 1172 bytes .../compile/assembly-all.sol-0.4.6-legacy.zip | Bin 984 -> 1170 bytes .../compile/assembly-all.sol-0.4.7-legacy.zip | Bin 1061 -> 1248 bytes .../compile/assembly-all.sol-0.4.8-legacy.zip | Bin 1063 -> 1249 bytes .../compile/assembly-all.sol-0.4.9-legacy.zip | Bin 1052 -> 1210 bytes .../assembly-all.sol-0.5.0-compact.zip | Bin 1247 -> 1466 bytes .../compile/assembly-all.sol-0.5.0-legacy.zip | Bin 1244 -> 1446 bytes .../assembly-all.sol-0.5.1-compact.zip | Bin 1248 -> 1465 bytes .../compile/assembly-all.sol-0.5.1-legacy.zip | Bin 1245 -> 1444 bytes .../assembly-all.sol-0.5.10-compact.zip | Bin 1246 -> 1463 bytes .../assembly-all.sol-0.5.10-legacy.zip | Bin 1243 -> 1444 bytes .../assembly-all.sol-0.5.11-compact.zip | Bin 1248 -> 1462 bytes .../assembly-all.sol-0.5.11-legacy.zip | Bin 1246 -> 1443 bytes .../assembly-all.sol-0.5.12-compact.zip | Bin 1245 -> 1460 bytes .../assembly-all.sol-0.5.12-legacy.zip | Bin 1243 -> 1440 bytes .../assembly-all.sol-0.5.13-compact.zip | Bin 1245 -> 1462 bytes .../assembly-all.sol-0.5.13-legacy.zip | Bin 1243 -> 1444 bytes .../assembly-all.sol-0.5.14-compact.zip | Bin 1248 -> 1460 bytes .../assembly-all.sol-0.5.14-legacy.zip | Bin 1246 -> 1442 bytes .../assembly-all.sol-0.5.15-compact.zip | Bin 1246 -> 1462 bytes .../assembly-all.sol-0.5.15-legacy.zip | Bin 1243 -> 1443 bytes .../assembly-all.sol-0.5.16-compact.zip | Bin 1244 -> 1463 bytes .../assembly-all.sol-0.5.16-legacy.zip | Bin 1242 -> 1445 bytes .../assembly-all.sol-0.5.17-compact.zip | Bin 1247 -> 1461 bytes .../assembly-all.sol-0.5.17-legacy.zip | Bin 1247 -> 1442 bytes .../assembly-all.sol-0.5.2-compact.zip | Bin 1245 -> 1459 bytes .../compile/assembly-all.sol-0.5.2-legacy.zip | Bin 1242 -> 1437 bytes .../assembly-all.sol-0.5.3-compact.zip | Bin 1244 -> 1457 bytes .../compile/assembly-all.sol-0.5.3-legacy.zip | Bin 1241 -> 1434 bytes .../assembly-all.sol-0.5.4-compact.zip | Bin 1241 -> 1459 bytes .../compile/assembly-all.sol-0.5.4-legacy.zip | Bin 1238 -> 1437 bytes .../assembly-all.sol-0.5.5-compact.zip | Bin 1235 -> 1447 bytes .../compile/assembly-all.sol-0.5.5-legacy.zip | Bin 1235 -> 1427 bytes .../assembly-all.sol-0.5.6-compact.zip | Bin 1234 -> 1451 bytes .../compile/assembly-all.sol-0.5.6-legacy.zip | Bin 1232 -> 1429 bytes .../assembly-all.sol-0.5.7-compact.zip | Bin 1235 -> 1453 bytes .../compile/assembly-all.sol-0.5.7-legacy.zip | Bin 1234 -> 1432 bytes .../assembly-all.sol-0.5.8-compact.zip | Bin 1236 -> 1451 bytes .../compile/assembly-all.sol-0.5.8-legacy.zip | Bin 1233 -> 1431 bytes .../assembly-all.sol-0.5.9-compact.zip | Bin 1247 -> 1462 bytes .../compile/assembly-all.sol-0.5.9-legacy.zip | Bin 1248 -> 1445 bytes .../assembly-all.sol-0.6.0-compact.zip | Bin 1362 -> 1586 bytes .../compile/assembly-all.sol-0.6.0-legacy.zip | Bin 1259 -> 1451 bytes .../assembly-all.sol-0.6.1-compact.zip | Bin 1362 -> 1587 bytes .../compile/assembly-all.sol-0.6.1-legacy.zip | Bin 1260 -> 1454 bytes .../assembly-all.sol-0.6.10-compact.zip | Bin 1354 -> 1587 bytes .../assembly-all.sol-0.6.10-legacy.zip | Bin 1254 -> 1448 bytes .../assembly-all.sol-0.6.11-compact.zip | Bin 1357 -> 1583 bytes .../assembly-all.sol-0.6.11-legacy.zip | Bin 1256 -> 1446 bytes .../assembly-all.sol-0.6.12-compact.zip | Bin 1356 -> 1586 bytes .../assembly-all.sol-0.6.12-legacy.zip | Bin 1255 -> 1448 bytes .../assembly-all.sol-0.6.2-compact.zip | Bin 1370 -> 1595 bytes .../compile/assembly-all.sol-0.6.2-legacy.zip | Bin 1267 -> 1460 bytes .../assembly-all.sol-0.6.3-compact.zip | Bin 1382 -> 1609 bytes .../compile/assembly-all.sol-0.6.3-legacy.zip | Bin 1280 -> 1472 bytes .../assembly-all.sol-0.6.4-compact.zip | Bin 1382 -> 1611 bytes .../compile/assembly-all.sol-0.6.4-legacy.zip | Bin 1280 -> 1473 bytes .../assembly-all.sol-0.6.5-compact.zip | Bin 1383 -> 1608 bytes .../compile/assembly-all.sol-0.6.5-legacy.zip | Bin 1280 -> 1472 bytes .../assembly-all.sol-0.6.6-compact.zip | Bin 1381 -> 1608 bytes .../compile/assembly-all.sol-0.6.6-legacy.zip | Bin 1279 -> 1472 bytes .../assembly-all.sol-0.6.7-compact.zip | Bin 1382 -> 1606 bytes .../compile/assembly-all.sol-0.6.7-legacy.zip | Bin 1279 -> 1470 bytes .../assembly-all.sol-0.6.8-compact.zip | Bin 1384 -> 1614 bytes .../compile/assembly-all.sol-0.6.8-legacy.zip | Bin 1282 -> 1477 bytes .../assembly-all.sol-0.6.9-compact.zip | Bin 1356 -> 1581 bytes .../compile/assembly-all.sol-0.6.9-legacy.zip | Bin 1254 -> 1444 bytes .../assembly-all.sol-0.7.0-compact.zip | Bin 1333 -> 1546 bytes .../compile/assembly-all.sol-0.7.0-legacy.zip | Bin 1227 -> 1404 bytes .../assembly-all.sol-0.7.1-compact.zip | Bin 1332 -> 1545 bytes .../compile/assembly-all.sol-0.7.1-legacy.zip | Bin 1227 -> 1403 bytes .../assembly-all.sol-0.7.2-compact.zip | Bin 1334 -> 1546 bytes .../compile/assembly-all.sol-0.7.2-legacy.zip | Bin 1229 -> 1405 bytes .../assembly-all.sol-0.7.3-compact.zip | Bin 1331 -> 1547 bytes .../compile/assembly-all.sol-0.7.3-legacy.zip | Bin 1227 -> 1406 bytes .../assembly-all.sol-0.7.4-compact.zip | Bin 1330 -> 1547 bytes .../compile/assembly-all.sol-0.7.4-legacy.zip | Bin 1227 -> 1406 bytes .../assembly-all.sol-0.7.5-compact.zip | Bin 1332 -> 1545 bytes .../compile/assembly-all.sol-0.7.5-legacy.zip | Bin 1229 -> 1404 bytes .../assembly-all.sol-0.7.6-compact.zip | Bin 1337 -> 1548 bytes .../compile/assembly-all.sol-0.7.6-legacy.zip | Bin 1232 -> 1406 bytes .../assembly-all.sol-0.8.0-compact.zip | Bin 1333 -> 1504 bytes .../assembly-all.sol-0.8.1-compact.zip | Bin 1331 -> 1502 bytes .../assembly-all.sol-0.8.10-compact.zip | Bin 1343 -> 1533 bytes .../assembly-all.sol-0.8.11-compact.zip | Bin 1345 -> 1538 bytes .../assembly-all.sol-0.8.12-compact.zip | Bin 1340 -> 1533 bytes .../assembly-all.sol-0.8.13-compact.zip | Bin 1340 -> 1532 bytes .../assembly-all.sol-0.8.14-compact.zip | Bin 1336 -> 1532 bytes .../assembly-all.sol-0.8.15-compact.zip | Bin 1341 -> 1533 bytes .../assembly-all.sol-0.8.2-compact.zip | Bin 1350 -> 1521 bytes .../assembly-all.sol-0.8.3-compact.zip | Bin 1347 -> 1526 bytes .../assembly-all.sol-0.8.4-compact.zip | Bin 1357 -> 1536 bytes .../assembly-all.sol-0.8.5-compact.zip | Bin 1350 -> 1536 bytes .../assembly-all.sol-0.8.6-compact.zip | Bin 1351 -> 1538 bytes .../assembly-all.sol-0.8.7-compact.zip | Bin 1352 -> 1536 bytes .../assembly-all.sol-0.8.8-compact.zip | Bin 1333 -> 1522 bytes .../assembly-all.sol-0.8.9-compact.zip | Bin 1344 -> 1534 bytes .../assembly-all.sol-0.4.0-compact.json | 5 ----- .../assembly-all.sol-0.4.0-legacy.json | 3 ++- .../assembly-all.sol-0.4.1-compact.json | 5 ----- .../assembly-all.sol-0.4.1-legacy.json | 3 ++- .../assembly-all.sol-0.4.10-compact.json | 5 ----- .../assembly-all.sol-0.4.10-legacy.json | 3 ++- .../assembly-all.sol-0.4.11-compact.json | 5 ----- .../assembly-all.sol-0.4.11-legacy.json | 3 ++- .../assembly-all.sol-0.4.12-compact.json | 3 ++- .../assembly-all.sol-0.4.12-legacy.json | 3 ++- .../assembly-all.sol-0.4.13-compact.json | 3 ++- .../assembly-all.sol-0.4.13-legacy.json | 3 ++- .../assembly-all.sol-0.4.14-compact.json | 3 ++- .../assembly-all.sol-0.4.14-legacy.json | 3 ++- .../assembly-all.sol-0.4.15-compact.json | 3 ++- .../assembly-all.sol-0.4.15-legacy.json | 3 ++- .../assembly-all.sol-0.4.16-compact.json | 3 ++- .../assembly-all.sol-0.4.16-legacy.json | 3 ++- .../assembly-all.sol-0.4.17-compact.json | 3 ++- .../assembly-all.sol-0.4.17-legacy.json | 3 ++- .../assembly-all.sol-0.4.18-compact.json | 3 ++- .../assembly-all.sol-0.4.18-legacy.json | 3 ++- .../assembly-all.sol-0.4.19-compact.json | 3 ++- .../assembly-all.sol-0.4.19-legacy.json | 3 ++- .../assembly-all.sol-0.4.2-compact.json | 5 ----- .../assembly-all.sol-0.4.2-legacy.json | 3 ++- .../assembly-all.sol-0.4.20-compact.json | 3 ++- .../assembly-all.sol-0.4.20-legacy.json | 3 ++- .../assembly-all.sol-0.4.21-compact.json | 3 ++- .../assembly-all.sol-0.4.21-legacy.json | 3 ++- .../assembly-all.sol-0.4.22-compact.json | 3 ++- .../assembly-all.sol-0.4.22-legacy.json | 3 ++- .../assembly-all.sol-0.4.23-compact.json | 3 ++- .../assembly-all.sol-0.4.23-legacy.json | 3 ++- .../assembly-all.sol-0.4.24-compact.json | 3 ++- .../assembly-all.sol-0.4.24-legacy.json | 3 ++- .../assembly-all.sol-0.4.25-compact.json | 3 ++- .../assembly-all.sol-0.4.25-legacy.json | 3 ++- .../assembly-all.sol-0.4.26-compact.json | 3 ++- .../assembly-all.sol-0.4.26-legacy.json | 3 ++- .../assembly-all.sol-0.4.3-compact.json | 5 ----- .../assembly-all.sol-0.4.3-legacy.json | 3 ++- .../assembly-all.sol-0.4.4-compact.json | 5 ----- .../assembly-all.sol-0.4.4-legacy.json | 3 ++- .../assembly-all.sol-0.4.5-compact.json | 5 ----- .../assembly-all.sol-0.4.5-legacy.json | 3 ++- .../assembly-all.sol-0.4.6-compact.json | 5 ----- .../assembly-all.sol-0.4.6-legacy.json | 3 ++- .../assembly-all.sol-0.4.7-compact.json | 5 ----- .../assembly-all.sol-0.4.7-legacy.json | 3 ++- .../assembly-all.sol-0.4.8-compact.json | 5 ----- .../assembly-all.sol-0.4.8-legacy.json | 3 ++- .../assembly-all.sol-0.4.9-compact.json | 5 ----- .../assembly-all.sol-0.4.9-legacy.json | 3 ++- .../assembly-all.sol-0.5.0-compact.json | 3 ++- .../assembly-all.sol-0.5.0-legacy.json | 3 ++- .../assembly-all.sol-0.5.1-compact.json | 3 ++- .../assembly-all.sol-0.5.1-legacy.json | 3 ++- .../assembly-all.sol-0.5.10-compact.json | 3 ++- .../assembly-all.sol-0.5.10-legacy.json | 3 ++- .../assembly-all.sol-0.5.11-compact.json | 3 ++- .../assembly-all.sol-0.5.11-legacy.json | 3 ++- .../assembly-all.sol-0.5.12-compact.json | 3 ++- .../assembly-all.sol-0.5.12-legacy.json | 3 ++- .../assembly-all.sol-0.5.13-compact.json | 3 ++- .../assembly-all.sol-0.5.13-legacy.json | 3 ++- .../assembly-all.sol-0.5.14-compact.json | 3 ++- .../assembly-all.sol-0.5.14-legacy.json | 3 ++- .../assembly-all.sol-0.5.15-compact.json | 3 ++- .../assembly-all.sol-0.5.15-legacy.json | 3 ++- .../assembly-all.sol-0.5.16-compact.json | 3 ++- .../assembly-all.sol-0.5.16-legacy.json | 3 ++- .../assembly-all.sol-0.5.17-compact.json | 3 ++- .../assembly-all.sol-0.5.17-legacy.json | 3 ++- .../assembly-all.sol-0.5.2-compact.json | 3 ++- .../assembly-all.sol-0.5.2-legacy.json | 3 ++- .../assembly-all.sol-0.5.3-compact.json | 3 ++- .../assembly-all.sol-0.5.3-legacy.json | 3 ++- .../assembly-all.sol-0.5.4-compact.json | 3 ++- .../assembly-all.sol-0.5.4-legacy.json | 3 ++- .../assembly-all.sol-0.5.5-compact.json | 3 ++- .../assembly-all.sol-0.5.5-legacy.json | 3 ++- .../assembly-all.sol-0.5.6-compact.json | 3 ++- .../assembly-all.sol-0.5.6-legacy.json | 3 ++- .../assembly-all.sol-0.5.7-compact.json | 3 ++- .../assembly-all.sol-0.5.7-legacy.json | 3 ++- .../assembly-all.sol-0.5.8-compact.json | 3 ++- .../assembly-all.sol-0.5.8-legacy.json | 3 ++- .../assembly-all.sol-0.5.9-compact.json | 3 ++- .../assembly-all.sol-0.5.9-legacy.json | 3 ++- .../assembly-all.sol-0.6.0-compact.json | 3 ++- .../assembly-all.sol-0.6.0-legacy.json | 3 ++- .../assembly-all.sol-0.6.1-compact.json | 3 ++- .../assembly-all.sol-0.6.1-legacy.json | 3 ++- .../assembly-all.sol-0.6.10-compact.json | 3 ++- .../assembly-all.sol-0.6.10-legacy.json | 3 ++- .../assembly-all.sol-0.6.11-compact.json | 3 ++- .../assembly-all.sol-0.6.11-legacy.json | 3 ++- .../assembly-all.sol-0.6.12-compact.json | 3 ++- .../assembly-all.sol-0.6.12-legacy.json | 3 ++- .../assembly-all.sol-0.6.2-compact.json | 3 ++- .../assembly-all.sol-0.6.2-legacy.json | 3 ++- .../assembly-all.sol-0.6.3-compact.json | 3 ++- .../assembly-all.sol-0.6.3-legacy.json | 3 ++- .../assembly-all.sol-0.6.4-compact.json | 3 ++- .../assembly-all.sol-0.6.4-legacy.json | 3 ++- .../assembly-all.sol-0.6.5-compact.json | 3 ++- .../assembly-all.sol-0.6.5-legacy.json | 3 ++- .../assembly-all.sol-0.6.6-compact.json | 3 ++- .../assembly-all.sol-0.6.6-legacy.json | 3 ++- .../assembly-all.sol-0.6.7-compact.json | 3 ++- .../assembly-all.sol-0.6.7-legacy.json | 3 ++- .../assembly-all.sol-0.6.8-compact.json | 3 ++- .../assembly-all.sol-0.6.8-legacy.json | 3 ++- .../assembly-all.sol-0.6.9-compact.json | 3 ++- .../assembly-all.sol-0.6.9-legacy.json | 3 ++- .../assembly-all.sol-0.7.0-compact.json | 3 ++- .../assembly-all.sol-0.7.0-legacy.json | 3 ++- .../assembly-all.sol-0.7.1-compact.json | 3 ++- .../assembly-all.sol-0.7.1-legacy.json | 3 ++- .../assembly-all.sol-0.7.2-compact.json | 3 ++- .../assembly-all.sol-0.7.2-legacy.json | 3 ++- .../assembly-all.sol-0.7.3-compact.json | 3 ++- .../assembly-all.sol-0.7.3-legacy.json | 3 ++- .../assembly-all.sol-0.7.4-compact.json | 3 ++- .../assembly-all.sol-0.7.4-legacy.json | 3 ++- .../assembly-all.sol-0.7.5-compact.json | 3 ++- .../assembly-all.sol-0.7.5-legacy.json | 3 ++- .../assembly-all.sol-0.7.6-compact.json | 3 ++- .../assembly-all.sol-0.7.6-legacy.json | 3 ++- .../assembly-all.sol-0.8.0-compact.json | 3 ++- .../assembly-all.sol-0.8.1-compact.json | 3 ++- .../assembly-all.sol-0.8.10-compact.json | 3 ++- .../assembly-all.sol-0.8.11-compact.json | 3 ++- .../assembly-all.sol-0.8.12-compact.json | 3 ++- .../assembly-all.sol-0.8.13-compact.json | 3 ++- .../assembly-all.sol-0.8.14-compact.json | 3 ++- .../assembly-all.sol-0.8.15-compact.json | 3 ++- .../assembly-all.sol-0.8.2-compact.json | 3 ++- .../assembly-all.sol-0.8.3-compact.json | 3 ++- .../assembly-all.sol-0.8.4-compact.json | 3 ++- .../assembly-all.sol-0.8.5-compact.json | 3 ++- .../assembly-all.sol-0.8.6-compact.json | 3 ++- .../assembly-all.sol-0.8.7-compact.json | 3 ++- .../assembly-all.sol-0.8.8-compact.json | 3 ++- .../assembly-all.sol-0.8.9-compact.json | 3 ++- 281 files changed, 276 insertions(+), 195 deletions(-) delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.0-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.1-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.10-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.11-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.2-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.3-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.4-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.5-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.6-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.7-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.8-compact.json delete mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.9-compact.json diff --git a/tests/e2e/solc_parsing/test_data/assembly-all.sol b/tests/e2e/solc_parsing/test_data/assembly-all.sol index 0a0efc63a..174ed06b3 100644 --- a/tests/e2e/solc_parsing/test_data/assembly-all.sol +++ b/tests/e2e/solc_parsing/test_data/assembly-all.sol @@ -1,5 +1,12 @@ contract C { - function f() public { + modifier a() { + assembly { + let y := 0 + } + _; + } + + function f() public a { assembly { let x := 0 } diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.0-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.0-legacy.zip index 28941b5b90dea7dad7b14881aa32362d410b891e..91d6a134dc250f216d6e09919ba78cc3a1bebae6 100644 GIT binary patch delta 1067 zcmV+`1l0TH2dfDfP)h>@KL7#%4gj0Esa7S)h`|8_000UPkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*Xq2u#);r>zfYg@N_eU zJL_L>MSlnEJM0yIYA7p%vqieFi7#o*&hw-U$1N0ViwUtosLo%`=P@bRV-W2NXhp`X zJO*6-St87=U?P>TvXUt3Ax)IiS`4PgB0PjgeTcU=+i}{|o_w++F;5zr04O%Gm_{wG z-9aF2*{43e`eHGc!F!NG7!)lN+}~`9DR>4Ma^uP;bXO#Qu3JBClBG0~68R%3-X(NA zC~&BU@}6{=rsz9l^jx5RPNHBAKKqx7QeqYyg@N3(+l`LRfok%AeY&^tm=8dpFw{{` zz_a?lgJ&K{n^tdcKZ~X~J5Pd`rN0n*T?Mn4dyl^feF3l>rDy&f!Xcx~J#!t+;NlH^ zXwBCbQ!plfhfLD$x}HkwLTxx;3EtS~!(-rB<**z#^~BYusEjgoub<1>9xC|H;WY-o_Vl;3=06aUPHOsq}4j;?%25EtXjRp zqF${8jf#6Cv&yk;g(OD9zavGX0w#|>4J_yI{EqS&XdAu*Gyo5(+<~)KXz4z67*2bz z=3As<%HRqj&LKY5srgJbeZM8Jn7W$8KiJyV7hSw!!JHG;mBW=~`Bzvg1#gwL?qjZ8 zq~i2{!)ryWH00RhCNBNs#pP`WY*GLOH~&?2@^W)QD3{I9)t@JOl-hQo!PIsr4gHzH zUF%Lmw?5N{0!)oEYwn=->Pi!+4im$+qGTa%ZYAEKs}K`zyW z`hmu%r4wishQGeeoVB_g+CF!8{CCkMrBt(nOv+biJvg7=8B5~MGE*)bn6r~71uwJq zp$Qo|bYtT}{MsB|5EgD;={&O?bJJjBG-OAO!Fq8^@ctnfz3vW?c<~DX{-xF!P)h*< lKLbAi0ssyGo4Ki0CCP}v0R#X53J(C2nFB`#Lj(W-001te{z3o% delta 875 zcmV-x1C;!$3FZeIP)h>@KL7#%4giI5a8#pCR-QZq007zw001PDZUiThLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|cF!~b=HP2p*Usr&MXPiwdShX5D;uf%J7?V&mU zZ?2Z8_M_usvM3LkiuI@cN7jE^C$n}?TDn_DYJ4sg>$;tH7g(tkN|-ZkaesoAJlWNe zYEo%DB_g4L&;}d)j81uf>YI{ALLi0wp_c!aiUQ~)#1Ro5>#Zw+VOyrDH9({{$hq$| zGc;bx+vvA^$F%p9W%sx)obhj3%ov{^FTHHiGvgFrS|RPfZP@$ACmw$#C>U&nV=Y47 z^J5(40U8&o15iEWNj?_8prUM0e0|NaP+FON7y?8!gaCRzV7$$r23Q_(sE>2TXYLHj zhgXPsKK?p>aoUs6J5XAfHq3CB0^gU0{*ZTqVHPhkmvy+g-LyMfsJ!+zxfR~APlv;Q zOV)aX@8XzIwX^4cIMRPTn->Kryxi}qS!b5h!;9_!n38h#D0!iYpO|~bdeETC;Z)}8 zF%A-<_Z&Tcrx}ZrU*Uu#Y%IJj{yvM0Mol$+IlsDqCa>PxipSgOA;plQeb>VXIQ1Ji z{Es88aM^nh{i~i97ul5|(Ul|3oosNj2Rr?0;>?yzfkB!Z5JrESE@sXdHSN4JbJL@x z(_6}0W@7bz!p!c2gEk0A`7y(4O6(ZEA}qiH!ksu%b*9eRa{|`t`1r=%|1Lx;)M5S{ z{)5c%?l}eg>gPt?!R}H?=Ar_S`B&ytnHo;kro}nU7MFC8mKEGBwHpXEP(86Ivxr_B zb5;oLnm=~L3;KU<8617`*o6ndC>a6UL9=b%Nj$(^T{FEEG#m85HUkap?ZJ~V25t#0 z`yF_G323R%h{PwKedO5vXDdG+_U}$Ih;u}j%w%oG<%ZVl<Y30C*ae)W3zR)KCDK4%8 zft?qi>}|Q_|BuzE08mQ-0zU&k00ICG0EKaIRHIH-o;(8p0NM(ZT?9x5eggmi005!L Bt0({f diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.1-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.1-legacy.zip index f55fa211ae095e3219101bbde9247471237843a8..b9d9d2076d9a543d9a606bd5787a5fd5b550f70f 100644 GIT binary patch delta 1069 zcmV+|1k(HE2dxPhP)h>@KL7#%4gj3Fsa93}%!LC4000UPkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*Xq6u81Clx9`$Bhun3x zLi~j6r9V`XKGs@)O6GztNLoK|=!c9dfhyls)0Jay-uy2$e9E{R^Fz**hKOA0lsQ~v zrP*C$)+uXt{W2YbLJPKsXL#ptWXEO12JQGO5ZM4gX{mJlczP1F^k&kETfut(uU;!w z6C90dxc|gT90tm#6j()t@yANMutmAqp(+_$6Ul>6Ydn(G`p zfF<}rpbp%BeKw}#_Pm-{F%@)o4 z#9@R$%U0^Rh$EgM$X6745({oq0wbqAx4qLT1LWM*AK%yVLnTR7Svxf|y}Hcbzb6STIO=p|lG%Ojm>bL?6_83ZhfSW5!! za-mln#JQxOjc&(_ru_IHJmMV$)(5f(fd2ZVrx?yG4)2#|Y^HX@iWZDzjboUt%XHWF zi5&iaQ99a*+K%Baqbv{Dmu!MUIU_26%cSDMX@g}F$!20SaQOdS8i`DKzPR7$=c-ho zabw6aX`qHef*Sgbo&wuFF{1-4Sj)4$7|=6siDn<>>?(cyDdrkXn2?rbXxeRi<%2j1Fpu3lrWBy;2F#Z zW4chL1`FdPp^d#JNgE?y8c9)s8A>PvnYnxl+UXB@iwVJ4>;WApe{X-NB>$=@Q!-FX n0Rle*KL7#%4gj3Fsa93}%!LC4000UB50jSzNCrg&00000TbKOI delta 874 zcmV-w1C{)(3FQYHP)h>@KL7#%4giI5a8yt+oXR@`007zw001PDa0DljLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|cF#3wcoADsB@EYccQLdI-h?SuSi7X=2v4K8D1 z>y_jj&DZ94VO)-bx8*sAd+UE%96!H9=1V7XD6n)ReRH{uyDP&$5=hGQ@uwaa3XTEP zO(KSgTZ^H=h30^1@eNi$BC+cyumB~J0XDy!rt2aqb)GyLC{C*4Ip6zz8YAN+Cs55> zcO4U-L0lxFNUZ9X<`_oEGz8TdENKX@%)=L#F8I*oAgg9Lfa=o)s>6TBnru8{D1;7P ze*(FlR+eUR(t_(Uj_B;t^jm`4PC0&S9@MbQ|DRR$sZ_jO`1T9g!8* zx?{|@3PXGzWup5i8=0|&h8Y;p1GYd&Uhwxu7kShvRW(F;otZtj^oO#KYh}isO7Pdn zPh1DER8#augMhhq1V9WeoJ=TIPCDDH&iuEsf3vSRqnlti6HP%)g!I|Bd!+6t3j1V{#b0{{R306~$M A*#H0l diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.10-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.10-legacy.zip index 801a9992152fbbd834d298cb9953a4483ea5a007..287f7e555cca19c09713b0859c2a5dfa16582421 100644 GIT binary patch delta 1091 zcmV-J1ibs22)qd!P)h>@KL7#%4gjXPsaEZAt(+1B007$#001PD-2*3)LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#ud`s)U;icu_ zPhAM0%c;4D*Tz+iz|-%+@ygVBx9-_ZOUOM;*Q&2)F}Hz+PA`F)scSxDey>0q-9Vgp z3JQtqDe-{=jFR_u|1wHvuQ>#{;hD64P6CwW)hVB(E*FOPd2fWpr`3OE$SWV=H^X*J z!(hx8VtuN|hkMbdHyIu7f??~3K-oN<+2uR0Q%?d;tiBkTjT5Empu)$=w%p9`%v2{i zR4w<7JU-eVyk;xZ$Re|&5Tk6esD7*kP9UFpjY5-mt4BO`uu9K>Rp_zS8D51$03Puw zV{y380Up$U2fI)OBF%sQf*-=9oZk~*rn#I`e?MaGYuW^5BR)KHV(p*)S6APQ_ec6b zfwG9E3iiv7_|oC3=~qHB1iE07CLiWl z@wztH`nLKlbUhjpCv=_!I*@CK0?YA@u^$FRJk0%g$An@P2sM8R3Lu~;f6x$_Gg@Q1 zHP@t;w5r4u(@>RVf)TiO-J^DSc~KuRao@DC7DbO&$rrMe=cxF#KQJv(w zq(vGv)hFQ2+Eah&iI}o%;Hp@O1StG!dM~*Yz0DnLX^niNQnv%(-JX*+0j9gz=?hJD zuWV?eU$%5+__|Th;4s)!!y4@(8Yp5$@NeW{92t{Bg@a0OJ4V$^QK7_W*^{oq2N@pRmfSz^?Nxh}bHIiL^_qWHl~)ZX!>Vl}`Jy^c@thE$;ysEF&9wRS}1UT~L)I=JOn{EfRO* z8I)}=?Zt=TrtT^t-1!{fF^+#h^6oSWE?};&n>?Z_={4|VD`lfGE9)<}nx~L;8R${rQ1?kX>L*OyQ|uK_$+x;?HGWy z9PO1<6#YJ~uok&9@KL7#%4giL6a8%=|%ouP3003AE001PDe*`CyLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|cF#1qG4)KkA-T@TNnEhhbIeh1j((45_#O&Lz< z@A;}4+Z*K}KZn*d>=_BQ|K@*d`unaaD^<<<`IS{pBTAarFK0)BjppZW+wA7pFtk=# zec0|7v`OAJV(tdfg zT(hRs+stAp$ZbUorDGGE+6VaxrwtHRP^zy{-xnSh|BVRTcKMWd%P;z-TROAzE8*t1 zOHwU%jhu>9YC}PYk*j}ai?yv`>bXtOM5BPGV?NO8<9{7n%z#2RN)tZ&S_^_JAA6Z& znTGH(QtgdPot{OcjgJ9LAjF!O{;|DBA9|5QyQWf7{FHw%`x*LDXGU2$59{oLv|wS~ z;0Yf<^F#~D^lUc*g5*HEvN5i7GI#!&3~3E08cthAjK1-xS!#dl!SPSUJQ4z&=-V`$ zHfNX(ttJ{iRO|f?`$|W2Sia@Ay8X6o-oMo}ln#+F z{7hc;yWueiftG*D7YGq>UFSh?x{W1S_!A!n3~I>()dEHIBYjL*Wr#RPwxFM)tw&>} zPq!4@N3g3}c*rj-jlz)Qlq$ml2}hE*594w}ssUNfvJ#-J*>pwlK#Ey*^_CtnU!Yw) zC}w;qUCujI)36AyO{hPWwGn74(@2=qlCz`$*`#bih3aff=A2Yg|5>tK1B4-10~leP zr==0*9hbA~SyvM`0$X9FmYL3MgX~OI<5ny$`w?U)sSJ&z#lBRpk5Tw3;(2|i(9@;_ zVd%sXNRm>b3H*4;R!~a;0zU&k00ICG0ETgJRO6}47;pms09Xr?ZUjgMvI77B001!P Bx()yU diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.11-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.11-legacy.zip index 5d2ea6db8e2d6341bd34ab217c8201a0ffcaecd7..431138261b409993aca8e5c093dff1be5057ba87 100644 GIT binary patch delta 1097 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.12-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.12-legacy.zip index e62ea14b01761902869191ab1d25160ef07f7e1e..e1e5b3d796ef2088a67a666a1770a04d54800227 100644 GIT binary patch delta 1256 zcmV@KL7#%4gjaQsa6%&G(f!s001}>kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*Xq4s7x5P$eSSR=GZNB zf2bahfETTD4ky%qiw*IJr#?OX<|}Za5{i@YD~Th%Fpu{E>8LLx+uL zR;u0sFP10agA35lH+Q5%|*$tGYL%!#U^qV8h^Bv5r zi4_t0i&W z;RD*$P_2xAJE~0UY&>Sh-~XjkRXTqo#W9YgB4K!bLK98M1ox$47OtDgK6kP`*4+9i#se@q{bLtWKP&!KS!&1yeEWVnYA zN5{c`?YW>6aPTd`RE~h*t$Bxuf%xk8%b${Xom+tJ3uZMK9RZc4w76YN90*6#0Zh&= zL23K+p8}%sq7L{~r+~AAWtz7+SI?7CpTn_FBF8=co@T)ee%^4>K;2|sKLDbZM9jD; zb@2n*Jq}f}QpWB#%}t2D8}3RRQ7WS&@Ki2;0Jd($GX7qSI|8c?a8FE&xzT6v0%(i5^K-2v+tinW35FTMroz1oGNh~w;OXJ(rCFt0w+92 z0U1Fu<%m_9frR0Sw8JcT|CrJ8ZhI_GPVUGyP_l_#Xnfn2KcVL(VB+dG^rI%)m(UsS zviwxXOi-7t%TPEu5Lhd0P6J32k2nQ?F<%4GPTLoHvohT2DgTd76gRYSi4gg4!}GR* z9N!V|U|x`k6ooj0GCdo&)i~}{V757Prrhhxt0Hs^38Zu9ZEj02z4&g5X0H_BK#Usl zz`%t6t6uNdtUeg7@lq1DR43Q6h=@$?pmB*3MYUTmLYQqG-tzL&*Ak$ezn(Qb#tar( zobn7f&ryQKZg5cs?10taOQlT`#r2LA*A0002Ac3;8( delta 1067 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 R05}tqRs=`}{saI30028@ZMOgb delta 1067 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 asaE*HrkTYA0024@lUM{u1_uQI0002@L1)AO delta 1067 zcmV+`1l0TQ3Z@AdP)h>@KL7#%4giL6a8&pyu*CcW003|fkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6wgKHJ$|lPXOTo30eG! zhS?Oo9YlY2D$jm@wG&^WOLnzoWu6A#llS(wInxUgSd>nySFqvD9grjd%RBTuL6LSP zmYpVPwh?$Nmn<8(m(xGeP_Y$Iya1~U^sA5jW3a7rX~*(k=M{v*S#hw8l+V!j`b z1VTm0g=;K2{iEtUV&T?loZoO-5Pax&LP*GU={lVb*M75qp;zI}-*t7!rfm|}7Zes% zsb%HOOO)(%J{^57@QHFWv3u^`<}as9hce(1f>3iEjm<( z1efbJVH>)!Q3Y2jE`>v$d9?*C6{N{F%^%)M>Eh3|I6SlOd0rKbMP zhMh10PeYx5S%lDS=jb~^5?l-&u|xisi8BL}R^(YazhL$HorxUOR;;{iKh+LuT!?+4 zR-VtQsF*6daemfBq&Wciuruc)0uG^AaT=0F*9viaKh>Mkj7%tMCnRYwW&@Y5u9w`& zkV7)iZ_xkfJdSZ5UY&?4fi^L}$s0ACDeJkySiq-$JLVC{uFE5rVXrP1OzNUHEs&@v zHnzqUlvKJJ*0@2#jU{}7v@`8p&T!GU3aG-;S)44zf+HgOz;cJ;;!z#6q1dYR)32Qe znZ|e^ed|JQODkBNFn4HbP_X-#R`6f*JgqECcF@?(>qY(?sK>$ennQcPNJNs%j;x|C zLe74F87?Mc-B#X@&27S0Lo%Mzg*NToDRfT&FSMzZn=V_2_qEe{a{%hVpG#!*P2Sy6 zhBUC!XRJi-IqATd&=Xnrbz-f{_@XGpQ=35H#<Ey zym}2UZSo8YkfSlbRW|I@KB#Lr@#IafwcCLgCG1QZ2of`;{$G^Ad*w)YcIlrC`wfEs zMsmeg569wvdJ6fVYdUyjgE27Btqwf{TWrxVZeim+knML1Hqigy{<6tXO928u13v%) l01g0#ad1@lDX_%+0{{SU4gdfo0001!Cj~+VJ_G;&004b71{VMT diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.15-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.15-compact.zip index 3f79ed597568392601b240a56138213eecd11de1..98bcf050b6709660b3ad9ee6d32e00bca331444a 100644 GIT binary patch delta 1323 zcmV+`1=RYs36~2PP)h>@KL7#%4gjdRsaBlZ&6w>3005^Fkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*Xq4wNt)_(PwpKj+3aI zsS{Ym@pL%IF5N4Cgx}b3B`6g&jbHuFMFWTiT4qcfGpM1NBGOgjW)2%Jz)76uH62rl zM~EIE9~)f)C^CSXBOhvYTgA$Aov+ep^*{ZY+{EgpP!oCZ$|&|kjw<_-)VSHU!xooZ z0bK<8t5RZ|V4gGpIaosK#?nH*`1#={LfQ6mUzaPzWsUrQF_wG@=j@5wCX-a1_i^O1 zNADIVcCNZKF&gXriR_NOY=&}5fFh_GrayjIFP;%9T5&%C-4+HQTH4#af=d&H?AR`` zcFx2H@+S=^#e`PSXZC~Q&rP0KGNl)iciBxQ81=}>Hk9Rur z=@$O!Y@l&}#EYVWF@mqSX?0QfX0w3Fk5wpTB88&=guOI_-I}LV+P2)zw^ZkEgGLIm z*s!MXU!}aR_|$r-k?n^Y(~9LNR&4s^dH%3#th2sUS6op3vZDSW;#8%YMC8VgvCIH& zW9t#nPkG)byu{>u^y`kAjjHvBX(P0xbv-mi7Zg)}0orb$=gv^L12EO3pd_aN88I^X z&&YwLDN2I0_TD+UnM&AcTJ>Nrx#CmbSytWFpeXAQ`}@?rT=Z|AGr+9tjZazG6qtQN zVD>{j+@QIaFLFrpA;`T{+&|08O?kyGngKUwV*Y_8o$i;(75FLrtaPqe!8FU2R8c2*e-9N#(D-AU(g#h5+TVomV1=3bfhn%Yd zpmeNIei&$a72WX&jCbh}!~G{>PYjxMWq{qE7E_78rj_3KGHJgwz_)EYWY3JNYHB#7 z?oPmhWC7o)-k=-^p*A7^?|T;_*(cL>M<6bLrBI&(E)9DkBnC^aFo!-#+?!b6I92t%rVLVd`~rLOYtoGjb?{Gl+JR%b;KZd`2HTPsiBoT;MmNt$AIQ5 z6o@g3Q-6+uBFcjT|Zp-XCOs5a|Q_8+lad#b28?1p9s-P}t`APUKLJ^35JgYT+ z)i`gdNxn!N_H&hz!`;QYUnOUpJO31Pl)J`tI6j8iS$IfCWhX3<^Iw4R?0Rle*KL7#%4gjdRsaBlZ&6w>3005^F h001Na0000000000004ji0001!djvHGF9iSq000x#ew_dS delta 1078 zcmV-61j+lC3$_UuP)h>@KL7#%4giL6a8$4?2rLW)0083+kr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6CdwA zqqhieMqp{#sU2K@?H|zJty29eaQFYF&CK>Cj`VOgrw%W87y;bk5rVxYJ;D^$KuaC||Jx zKxt%v8Eq5Ca&8iUt52x95$n?hf9e$8tCnMy=6`m(UI)W(Blhd} ziK;q|3G0xB0e?UsgQX*Sd&uCo4D8G*a3d{Qx(bz5#uoYpiOrtmZF@v)pe9%_k8k&v zy^AW(F^Z0V#&TgxHg`ncFjhk!Tc@>WmRCkT*St-0mYu8tSyUj_6I5@rI2)1IizkWFp2XHbkBj+{87l|o>IN=V1kVuS-grD$D%p4)**t*7pzgT_wHy?t`G+{LU|(^sSTumRB>1}SRP~b!5pQyQCiO*fA44Ksy{K>`o~O#KQi5eD`r~#U4@E^>JPJwB_`Du* zlV_CY-FJyx;ZlX>WARhuZY1II{+}&+Q~_4sBdhpM0E$Hmj8vs{A`8(bZ}!Y+d_nea z-R?SY-~4+A%>0sM=VI0}jr%j8d>)+AkbFH$ w^nd^7Z{BQBO928u13v%)01g0#ad1=$uq+5H3(^b diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.15-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.15-legacy.zip index e6be05ce3a7604c99ead2897d6fa4d218d3ad116..1ba7ede7f95cb822d5a6e610f21f1070e9e6c5e8 100644 GIT binary patch delta 1263 zcmV@KL7#%4gjgSsaC9qN7lpy0024@kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*Xq4wNt)_(PwpKj+3aI zsS{Ym@pL%IF5N4Cgx}b3B`6g&k*<=9x=*P$<dtKr ztjE%R-_@R{>iWsxD5Y`G^{JtAt)$!Q>n;{P^@{;;!-T--xyPqEh3xmZgTv2Ce0wKv zZ*eQE1)Oz3BrE`nLOMfsd=y_;;SIux0QpjbHw4=OP8^+o$O^liLU^VDZWEX7;%RFj zcdSFmMaWqiKrfa-%6-(J@iCRULEj%&bQqn{0~nDIjt~7PXJZfGeH&%GF{s)<8sQ%W z^d;qF`LQ%DwV)PVhQa0O9bHv?zxYML2kFjvZ|GI46%vsm-l7Ac)f1gy3RRMqLm$Vj zq`RH7P3`1=&N}rqca+2yh4mC#11nV^2!4p5QtCzyD_&eG8}#tw?9$U4i^F&958!YN zEd25QpaMQs$<+UxWHc-!Z`? z{1~a-_C9stt!SV%F_~%k|7h>K1jmLfMx1gVw=fESi0$@;@R>hnty;XUg{c4DLvvxe zcHmOS)Z(2y-Z!2t+s*3mF-W{R68+7poINgEg1+{RB%#E}BnwQ?sm_t}RH*L#m9cDd z)$ez{8YXrJsGSQ73YU=9I9k{DJ_+)=m_`| zW%G-FDJ~;T&IwBzT(*pP%(plp<)6ggm``adGpP2U>XHzt7O?7aVAq}L9cnK_gAcI! zJYKpLBn6=Cu+?}`j3x_#JGes3IR0GRY4--7eA`gy8-1tCD%kNYFAEBBqq^Pl8`8b^ ze2eHAppe<90EvgI-j%F{mJNLhQjjc;LjsO}fQ6^_wfvwW=Z@E-CI*Ux&5bEXiIwO0 zRh4{xR1M9YKCU@U)_19j=sveR|TmYE;?tO*;kRqCJY|SMq(~VA}=i8Xi(%}sI`r2`Y-5maZ zZ%r;l^<49>UWD;_ytinZ2#ov2@xwC!>RJreb*o16PX;Y+BMN#^k3&&EM*imH-px67 zzgnRU>Dubl87T^y2M5vH_3!qNaqH1r~D8vb=P3-1g-L{sXBL9Fi@Ilv;^4V2j z7kl{6SKyeGV~)7|^lF zrbkg9D7V;JPkYo=8&=&m>uiQ7{EQ`s1qGgCQ3zqm7E z;QG}0KTV7o1p?~siT)IcvY%rIreo&nmr!ACvbPh|ef*RgDo{%S0zU&k00ICG0I9jD ZR;-6d*2Dw=06G(sR|H4~1_b~B0027GYKs5> delta 1074 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 K23!OH0000%4H%jL diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.16-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.16-legacy.zip index cf1c5c9fb3db5de679eb304373d7cef8eec3b04e..8f6c8053bbb8674e026ca93b5bb86d74f2df618f 100644 GIT binary patch delta 1278 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 delta 1073 zcmV-11kU^T3b6?oP)h>@KL7#%4giL6a8xNI2HOV&006rVkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6olX{3OHiZ(WLaA%D0(e}mm)gLJ z5XGAYuG(|0G*(%El#(#mx?RwKPvszIACXZD!{1!+`O&D5{e^P_f__2HuQY@*xh;R% z@}3|)pEdc>8!LEoX954-f&{xMWqI9M9to&IQf<+`=9-OcCEF`-cX`G`6MqH6=mHZ?$KC-t7ffV-;DV1D9YEQL41d zjP8GN^3N4aZa;JYhJ3~~I!E6#vR@>G>6I6Pey4A5ReX_KQ#@0kj_uF{Ly*`PShfPL z>rcsVJ``uJKFx;p$lz3sY^8%gVL26Jg@7xaNf$jhp>8sYKOf&C46IHbKO)`DKpemN4kbbO)kq$)g}cNSn759MLrj?9NQ2p z=2HGS7;Wf1zhOIR-t3QzxY9N)5!Z;J`|`2dSDGPTUTn7Mlu=oFcLZ-)?BtM^K~va) zOEDe8sam=@3OI7@;^PWm!LDk5LhIYTwEJ#kEs#KeZ_*8o0fpp_{BpISjl4eJ^p_7p z0;;#v%jOj@6#2F$1u$p^2@@+v_H~q=MKVq< z$uVBeX~KXj403L5YxHi|(&@{foMZ8$p$~qEz@n;rmvFWY)<5i8qUp_fVa7iicEA65 zFFaj;W0dEd8a}?7dH&l7)TIvDt#}M57rn^cTn1*8&HdMZnN8!~yo&}2R;3yRfHkE3 zD96X29?;b{76VopdWl?f!O++x?kXYFRFL{&_)5C0XJlG*&8>1 zE&6_qryU&CrVEkUHP>Nh5-7m;7ifbkc=}7Up5U?vtVJwrx^QiphD0B{3fwrW*tFVZ zLP8E}#8+B^KgSRm66SSC8i$}GqF#GOGyY%KXH+GussW2}N@a`Scy>-xUjxT5F#oXD r8az--0Rle*KL7#%4giL6a8xNI2HOV(1ONcL4wEVcNCrs+00000VCD13 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.18-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.18-compact.zip index ca31d31c302149e6b7430a481b6beed979833e2c..ed0e3aa7b3f4ac0167dc2fe39c2fa15132856e90 100644 GIT binary patch delta 1330 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 T1ONb34wG61NCssD00000DM$Wh diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.19-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.19-legacy.zip index 2a5fd5b7a5a25af134c4601bcfaf03da11af3e58..6c393cfa12e188f1dcb3ed36412ee6c3074f06b6 100644 GIT binary patch delta 1289 zcmV+k1@`*734se6P)h>@KL7#%4gjmUsa9<1Hssd?005d3001PDeFP_wLL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#PEN|YDq<91KxR#0o&DmxJPI4w~{o})>G z1L>3l+m#b)*yVFZ@lM-Bm7|tM4-sW6X!1K`743_3I6k}!2?@;@=j~W^ir3-LcR>!; zD&0>V?f~flozj}0S%EK_241-kfcKct>~`PYA(tF72i2_1a~R?DodJI%6zEF=1gy$> zyi&#~`@!(Mn$Hz$9+Vq=85XOZE?6}CACL3k2!m9d(HF8qxvh}&D&3?lI#n*l=z=f2 zcXYaeu}@;5-f{tCPq;e%KKlMMq6ZtSp(Xl|1|p)CQQ37LvR^dWNf25HzKpO$Gat^i zXvFzt3Q-NZiV{R?O(lP++;(=xp~Ogr={VR*A3}6Vk@EWx*h})pgS-V0xO@4a!gk&> z&sH^>;~902b;dxZ8*dwX=Gnud3}tmzLzQ@28?St>wkLH>=-yU8>_ARj%FVFpYmcNk zA(8CtM(eX++^cJSR?GIP3Ug!9(AJ&&Z4M$Xs9Ifd^_l+l=kb3gIz6@%i-<5J&DzBf z;f%sDt~BN_^(XvWywrycur@a_An5|R%UgYD%7VP|98;x{hWUPRm|c9C2CtgURNJMm<{ICZ%l{S=WzLx9H)P8Nj*tM#gjS-%BYF-GWvg@ z%-a~Bf%6bJsqKH#&KUN@OMLCDxpAU8a|Ny~q5!}p0a%Vs#L4cir{5GDWF?VfKL=sM z>>($xs05w1;Eu#(UU%jEs96K%ds=dB+~$G`2Cvw7P$6mv@L6JO62iZxW1DULxM!6_ zS--O8b1#2)Fm+oaZAzXAd)Su4ZrJ?j4wYi^Z%Tod)!u}XOI1T70h?+C2|?Bh9!vRe zR|N2IZ>O$tn=iNER}g^HVz^x&CifpL3OjRhgOX-(Eun)O1q;YTx)w}{eb@K)@YRkd zL6oC#r|lJd%(FWP7oAy&bD<0T=aPvPLSm;@E^mJ_S}`?41DIe9sVETAiNe1MTcg#S zGTxQy5j3y>C2-9bcgoXqI0QO$EXYmMuB#@X56_LC)ma!l91}X_(_6+`Cbxmz5`uO?DzbQI~1>$JX_h5fP^K8y(9NVRov8I+hq;;Ti#Fae^W3WU>~)HRe3-c-;3>Rz5YJ+ z_Exo%jsgGjw!=_RO928u13v%)01g1Fxv5rc={Dro1ONb<6O(KNNCp`N00000<2`IL delta 1082 zcmV-A1jYM-3%UsyP)h>@KL7#%4giO7a8#1YC(IB8007|*kr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6pt_0c$_ zIW3_2?^wtz$IlFZr8h6|(;%Bx3tkfboBVQi7RBWR#k>hw0-oIpSGK>-@FKGaD^kVk zx@$H;fyDR<5v}nBWqaQm+SV5D1=7?OgUM$(d~mF{$}?we0W1dK=gCs`Ul4XUZGg(m z7o&yIjkRQf`MujML#W`wF|T2-G$2RKiO**SgrG*Hgg%vj)%%mLimDa_TNdmLOKtE0 zdOyb409BxjU6?EOa3h4(A+ba~CPlt=*p_*i4_hT|%1${w=*Z(1Fn8Z1_ zG_b;R#ykNH^_SB<{&uf-4nXQgAR`otQMd~LA9 zAh+fZ!S?SUB==?Sc1@&jZ8lGKAbr%~|H3nJ)op}-ogTwO z(nPI)(bzkkFdlW}3DAV%JK!-|7(58MB6F0X7&Qpz>NEl2jUM&o*)_VyWBEPYtf&mA zRv14gEW7F@!_&i_T=Ms+SJBZDMq2|h<93sp4yt^N-;$?DKU=z3S&1fWWUoGK(Ku_i z0LUG%l9%+`<2~)cUI%F6CsZj0iTg)4Intkh$zgBZ3#Yf8+WpiavsWGcqpfBcl`)Zr zByJbq&_(wIrMr$3+p&hp+Y#W)h&J^9o$JmMw`2lC_`@hIeWcgue<`BMZPJnefb4EbAY^SxZ_Pa!*#tsPi(BY!nobYgT+wc&#k zxz9pO8RUHL_{oHAPuZjx`l@6oQj(ihkal8i)>H^wP#4W?G0TN;4b?b4gy)1&eT>h9 zco^lPITHW$!JFq$O928u13v%)01f~ShjDOJlFBE{5Ci}K;SQ5C1xN-`1ONa404Ayo AegFUf diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.2-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.2-legacy.zip index a6ba3aacbf6a9774fd63fe139682f41fec31babc..7c40089897e688dc918e5616ce23b14c82ba578c 100644 GIT binary patch delta 1069 zcmV+|1k(HE2dxPhP)h>@KL7#%4gj6Gsa8pX?QjDG000UPkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*XqAgGw0N5|43K|L(L) zJeU1jjfYHaU~%7n8M`)H=qpMVL0ScS!*OM^6>A>gQe+h+I>6YLWgZrr2w04Mhuj=W zyh)5b1g80Z998ZlrAC;z-i2yv-tl+N8SuFGyqGo3TU4!Iz<63c=|Gi3Szf{2Df%Zw zb5St|1QDk#o`d@2=RS%opwK59&touAr+?e4bx|FAYz6s$8jmkZrFI?ZXh6hX5FjIT z!^mZvZHpB9{YK=fb4KY{2@S;D&Vu60a}u-^SIPh2e24#sFoGr)fbxHwtb=Ia_%fQbmEWWp7EoFbD1!_Kf z2RGfhR8FEI0T$dY!nezzhPm-h4qb1`&=NVw)M<#`1sJdUZ~Xx}A&GmR=z7elZeAHK zLHcTv1*q~U=%{VJ;a0sYP@fm9)OnaFnF6U87o4Jh+8$|FBfZx6WmO-8T;0-wjZyR# zU96O(cX>1Vla{6k#T-2Vf`l1@}wr zZftXZKsQuO?0%G+^&rDy0vPWm4`WiB$IHcsEENpVkdT;=KIq*4l&6`m@z~tIWtQlM z^)21IV^#j-qwpP?>e&`-Vgx$zR*XXAq*--(ztCDiN3Y=rbs??oNGi1|h7kwb!fQe@ zB5>kxb3iv?5)O{@@W}8*kAim&ce1v86C-GUGRF8a?Y!Z(55ubNS(&t%_TL&+;IPCZ zKpie>xK92{j)Ghty){_ZAo@(yS`fBtPG`%IheET7RS($`Ki1vza(WjLm8$`eP|^aX z=Wzs5Mb9-7OsJkETv-lrk^StSf>yxW+ei>77D=m0@$z*;+U)K4;P!2#I(JJxl>sUyU&u3 z$SzWHeSp#rKK(HL<@wF5vYXyGa{3#Kl@ry0_yfc3FDL0D8$*dyupP=stpDi^MSD<7 n0Rle*KL7#%4gj6Gsa8pX?QjDG000UB50jSzNCrg&00000;3N0| delta 874 zcmV-w1C{)(3FQYHP)h>@KL7#%4giI5a8&UXu5CL5007zw001PDa0DljLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|cF#7$K_;@T>oA805S6c2iiQqF8K8Ofvpg(2Rt z9{76WvhCxAJv);f(1C#E!p?t0Q4%d|6PYh1?Evzce5M>UCnk_`fjInMDOHe=vnA89 z>x%MiOc6!y>Ax=L&J~~*eRndM3(00G=gR9~k>&NSm}Y(L%PSSZ-P?`zx!td6P0SEU z+DKsdp@LyB!D`?);oDwgYHuH0=B(FNIv*P$X!`dp&<-#-&dcY`c1H z_0Ga+1$NMF`vYkQDq&>`<00#y!&lDyS8Lm_-Q*cZIIp5?3ZTpej9F!{gtDi?5NZOZ z)MmWy>4C;`ll1@Y2x?9>->$~?W{nwc2&IXLe8WOEMcr&br^6euk9%+h&HpIZ9DU>xK|c4#<^=u78QOPgX{ z4#|p;Ojj|t0G+6Z2q4QzehYUE027z|Yx>{OzrK1H523-(#=g&4aea)Ha%wbV>^PI&2*#Hayp3Jzmz5O6vq8wt{yXlt6%#lo zowZt*)j9X3Q|J@HFdUs@~ol4Zix z4vb!L_e61}@#A3%n5i2bUyGj3W{P;*Y%G?1qc$$aTfw%plF~dUL1lHCO2S=BEe;J^ zt-@CZX#f+9)${*VT%7yCBzoYYqC2x#m-oKRC>Ay{TH-geC{qy@M(%~^sjfamkNPNw zO4N)_BDWv^UFQb?P)h*i6H@fEIZI|Bd!+6t3j1V{#b0{{R308f6U AaR2}S diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.20-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.20-compact.zip index 8b8f30dd6e6df12fb50d646808925e61c29633e8..4d610d341050fb2870535a757abf90174364676a 100644 GIT binary patch delta 1330 zcmV-21@KL7#%4gjsWsaAY;6T$xk000LQ001PDkOU`@LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#-#*&yT2>W#hbk%hvp1MdisAQKKF1@H5-cW`5P&rKKOf+e&MU-v$W$}mN#DPwUBLT zw`GF+jX@^Mc}#Yk38gd_wo{y1LsjE?_m3c~{8lk5!S%j>ZbfGCkZA1jUA9Q%l}27M zkN-SWi(qZguHD+$;&UEuPnR2AZMv^>U{J72ZiJ1l@=-$ZROhg*x*mUCZcV08QFZhx z(LiI7W}WP7csH^XT9#vJ$$>?;6Zuyt|>FS(AcFbZ{CsD@psxcvPM-kq2&n?dSCTM{?+mIaybiNfoW;cSWmh z9N%yBK6Z9BhpP0>h@5|YTaCKczI=fOr%2!uO##h<4P=w1*6@hcF9sa|?l&l7ABbPr z$b|lqAhxekm_54+Nrw#@0~vR!1qECeaYRcIpR`n8qZP;rsGzUf@J+D)a_`5*s4KXQ z782eb+0H*Qk)2(E4N{;)U7d5hDku){GX4yakKO$~>mZu8?wEh7yfRH^XJ0jaiYl3P z#1MA{zP|tFI}~y%j;JI3vI5#&f=`BajCwv{hr5O-^Gm39VTmhmvU=G%90P9+(R~ zkHg^>E-qnPVLWU>{Tv(v1{%qs==667zVyq4B*9raJv^MgjO@~3=`du=X-F`ViXqeJ zo3Mn)Ed|l?130Ak4vnhbQe-Iy(~q$cl}%Mob|T6yVEunV`Ke~-4pSqv@I@L4(+d}= z@WH9f4PQAg>Z7)-WpUHoTz^+V8Q3F68j7FuWMxva3gA*x3SN(#%8SRG!hP9?1zgmmP$&4o`=1z5Nyyf zMP9{$?eR-9_`*s2_s|iQ%imX9F~}ytb^G=iR^PZANO%J;KTu5oIvMqMW8&uH*jm?y z;=Ti~n(O(#Uj1!zt;%ni_rN&Xnuq&pcf%WLI-Y-QaENk>DbvV#(Y7xMI+`)R3U%6$ z_8t%Us6KS|Yk|o5yeB{_dw!ni;i3Gm)F*2{uTuSdXLS*cAafPitl`hbR!zOx>mWz^ z>tp5m<7Dy|cC0Jyv~Eo70@Qyrq$1&OE~3 zVTXUeAyyEv1ONaB69AKd1V;uz1poj50ArYlrT_o{ delta 1108 zcmV-a1grb03(W}|P)h>@KL7#%4giO7a8xbL7H1;_002}D001PDYy~HgLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|cF#5#O`)7ZZp1(Pk@mqh1LizZ3<2Umn+vHkFj0iBAWHD;M4d{i# zHKN_hFx#;VKzNCjVKU?kUNwb`QvN#$octOAE95RIr+~g;b#$qc?;VATR+8;h3wcZP zlHs%d&EU1#F!iw5NJ02D-7y!%%;Ok4QY|b^cJeZWf-<(F4do(-QYnA?zj&!(oOnx^ zg7cnz7v$U4S;-L4y9-6~7^#~Xt0aVrpDLAj#p z<8Sl+v+?GbL^X|(Yd65G~GrYs(VqQzUa7em}&;d;u@ zg&{EmUOPAl8Np?f`_6w$<>T^dsxoP5|7LzHi?lyrXlx!PjmS#?tNa>YT|RZ4e$F(8 z3Ob}pFM#M%Unbnh+_)*7Dei%;V4CWR2kL*Wu<*j63);A%qC|*C zOEq2*!qa>nt}1Qt7c1dD2@)kP2cPPnRDDnzRVU~cu%|e)6T<&5Flw*LF!DUjg`nN+8y4t2 zGvbynn#oyT7-fHw$D1LKsgG)@T4VZ<@CW8KfY{3FyEj3wYM08c_MB7c%-;-ZZV_{n zv4{M)zH1r5=FK>Sh;r@E=9%@Wb~(qICieKyYtTK3+WTG{rl7zsK6OHgN`jCW7$7AP z)JNiTa}I182g|9pzoF8?(N@&fc)K7lunoIWkz(HZwuf*TG z+#MhX7EB}_SR{^O@Sg`uDNEx$n=5#l<1HAOx{UHq12E9;rU3*GPn?SKe9pC zxWOsjgYy6xV3-Y7%C_yUi!OwVZ=8g?*SSsU_i!P8?*Hund*V<_0Rle*KL7#%4giO7 aa8xbL7H1;_002}DlUoHy24w^Q0001JF&&!# diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.20-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.20-legacy.zip index 2d9d88bcbc5a197cb1055e3fa87fab6a5a8718c1..5a1a08c04872bbec42fe253e26e8ca13909ccff0 100644 GIT binary patch delta 1290 zcmV+l1@-#634#k7P)h>@KL7#%4gjsWsaABK_vP3G005d3001PDeFP_wLL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#-#*&yT2>W#hbk%hvp1MdisAQKKF1@H5-cbjHB(6h70rT?D(+=!rNIxhIr4{3PgDR zp^#^szX;usW%vO+$`<{#?aM5rcvg9`C7aIsCBv*I?Jna=1Z;QTf>bFK7zkBnNbpdX zcR+-qeeu(&euMr#W{62z3Fl!GH0#8xtlkd5MEIFqq_%WWztJ7iTK0bgjj7n2DTSkk z8o6{T1020Ht~%wi;4&l9bniH;#(o+V8U2UXRQ^Y(?E5FCo%jTQc1QSvDkuN94PnfO zfnX(t2&LW0SLVusYbb=fN-k4{8vgM+MJ9G!eW(NeVKtc06IgAX9RSNi(kG(^`-$TwV~0Ia5^ve%`2gpkKQOjUW5F`!c#E zq3anPB!wD18>d_AidM^Laf>l!LOjz{sY5~{P&3&T-0yE)Ir z{%!srWRkn;!`4?PCdxzLAw3dK$h_F{<*3T!w6e0yakq}g+HHTi5EY>VeNd=F98)D4 zPD>mb!II6*5siyv?mJ??Ikisy9tAKKhHk3J@I+=KD#ZZEdrN@|lbkKQUpq`oFZ2)$ zA=o*kzE~tA2Bl7$c-z%uXoDGNyl>Qa$Qoe6~Xn|sH`u9 zcIFj8<@@XeEsaUqwb@|g`e~cLE8r`)e%#LM9zZN_@p}@eiD)lcpBZ5V@UIWqu9fUW zl>-EY2&{7^NiiZR8Us-Ld;;1^DY>Y&JbQb)7w|KJf zvQQs=xf=Pj_*V2pIqL_FCjS7PwA46?W}$EjMilLLc1uvXO4A@$qh04sC#knhRO{LB zkCyg56t<8 delta 1082 zcmV-A1jYM;3%UsyP)h>@KL7#%4giO7a8x(WSnLo4007|*kr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6Ga$s zLVpQ-_1A|XR*#>5ZbLD6g03L=3-D^W0b-YG ziFAN6UGV55O4wya9}e3==0u4ppS5RWl#>fc9-n-*&ymxc#zAsyyaLIG#E-*M6s}8E zm7VMfGlDeXsO@qJ9Egb?L4WPz;o85dsbfARaA?;E%^+7c3Qu%d%5ruZ<*63Uo^UCd5Ddu&DNl`sE z{pou_n&A4U70E9`fiWVpK|)(21pY7-_76Fi=TNS69rE@48Nej6zCgybc##WCH+!(XXSamtWjObwsuO?#Np>tQ?q56Y zp`v%%wlLh#z!gREtU<{5A^LY&HNutREw2|7+E3it>bahPKChu=osc%~MjSfIY**@F z8o+t}668(C+@@I@Skwy~{yhaQXeu$}O3fI57&J4W^gdm?yD8!$ko2ATw^m)|$Q(2{lJwwwq~@Oh&`jo$c~2 z!U(((V~~|xY2(xUjYJ(BN{jph^6}N0^;jw=K-2$3FLH2kc2T#bcnF^>yrFTJA4ePPygdg=1v-jh# z&ybS^@RF}M%$z-sv_ZDz8tlk6qhufM7UO?G+!?~YwJ^xe5Ci}K;SQ5D1xN-`1ONa404P!o AX#fBK diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.21-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.21-compact.zip index 42254f393cca8bf97443ba83713f34eef9c46f20..0de398c7a1110b8d51ccd5228f951a0e69ef9e09 100644 GIT binary patch delta 1323 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 DItyt* delta 1085 zcmV-D1j74;3%v;#P)h>@KL7#%4giO7a8&u8Z~GGj008(7kr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6NZ*MoKP!$`{{kfSQwoe~6ERA5eLjV7o6L zMnSi7rU~VlS1BIAOt-c_u z+R88Uk{j|dmg5E zXiqxiV)q<>EgJ?{L?oWVd`)d|%H>r}9KiqIjMJrf>r+=a$Seg5>%n@Y|04iZHI(Gk z>3hOLG6d;fjrC>8c8?AL315ajnjYXNsOPrA{1sS``lT!anCEtyMMo>QPAdiCRa(kd zq*R~qmG-o#kMC+#2>5q&ogt(~tU8Z+vyf^LCe!$T6c*I{0Rh*Z&n0^re#*3-_Gn+d z?mx`IJR%z$;9&ve&&KW4ER00hTk7WPobEJgiE81-B4 zfY+&4S9YLtW0mG`Lvx-ZGW_FJu7@)spzVTooby?CB5RhdjcwnZ+u_VzaP#wa z=0FT@#Og+^tz}kYEZ205Iwg zFdM@WwA|G6>NDhx+hHWPm&oi~@)L27frp}B+qK*lwAC7^KCdc&)OQ!7+T1^{rS7z) zWrVB7V*o!*(EsZZXckaQ0Rle*KL7#|01g0$ad1@mo^SgT1ONc|4wE+pNCs5|00000 DfgK!k diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.22-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.22-compact.zip index 1a8e80479b0f2130fac58332b1cebfcb73ffbae0..658acc2b7ef452e6897bb941b0247b62b2ff4ae4 100644 GIT binary patch delta 1357 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 delta 1110 zcmV-c1gZO?3)Tr3P)h>@KL7#%4giO7a8%Tl&A}`L002b~kr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6bUB{%?TPcj!=iU! z+cxQEQ-5~SLp~v~2o_!u0M!ade)sXJJszQ}I?Ua_-U&7m6mTC^-*^VK)F2*2>^Fxw z7>Bm;ON|jaIM`pu$$w!Gs}jraG%)imNFNB+Z7|cE`O^@89hx0jsHq|cHDDX!e(y

pe;ujNs7fyxIwOId2pMlG(2w{}FEjTWFj8XPE6=E&mx#C9>cN=wEm#`IM z4n$%2NwFh;7^G{a#2;#qAy~xJ;ZTWj7HibyfMq4l?njx)mDvo@RXl1)s>;o7t(wy9 zonOSR_XS5dm{21WqF79pW=Tti*eXzZQxtP9+GM)DLI#nYBpvV&j1Ci|aL%sO{`LW@ zZ?3^*9^V&Q2B;xoqAIQbLId^LMC3{2zvlBg&A*I)KBiWn_WnK(-~Db@`)kjpUToi9 z=mMLEJxK+j{f4=s*(K%OQ&g-Yy-B;R6dk47(>d?IXM#6-vt^HwQv)9@(q=m{JdGuw z3_m)6j@R{8sp}gUtnGeO*2+sfL}&la{k8fK$VdeK9L9hr9aG8&j~B0Hai<{;m(+ns zUlt920AF!b*rAhpSpg+SZl1J7A@t`fRs+GOQx^E%NNMDTtJfA5 zT@IW8ID*6l<#Dr4o6{Yikpofgi8vM8?x6SY7lDu2HcEZ`t4JECb^~n+HLAOl*5XD$ z6iI2(NR`jy5qw*@@f}j=IZoi+Z{Lq4CQQ+P6?jDtLWE!Np+o+>f0IfjO8WT$fUl5&6seDvR4j{gbov z*0x0XB8)))sFjI0w>rxXKOqZBGra3R0ZAvqjS4fLFZE?yh-N~`G8re}0LG{sobkth z#ja0hUD8#6xcDKsAB@KL7#%4gjyYsaEX)RtOpe004y(001PDu>>cPLL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#zaOQCr?MAo{6 zDeZ`@1B><~rbxroJDemWKG=YW>Xi#*A_=Q{m%)RFHRZ}VZoq-dlr}TP<3q40vk~0) z;UjY^x&YKal1X*o4B#PTji=rd%2f26`=!fwzy=n6a`I46G|m0PD7GZZwH zA}wWOII_+aM%!oT?=+Lv0AX@VZ{o>_6`{#j>vv{Q5-^wS13$N} zW-6R*-DRi!lF7rGAt9R_N8LZ@Igxn;js>))2A49t8z`8Ze>w0+cT;&#upCFuC6MV( zn312ATWMR@A;0&qk0^f@7#GlN%rlLgjOgwWIOdKe7Vm9WZc&c6y|r(U z2mZ~Lp>-O9-DiIur*TAs)(kJW(;7k*(|suM;I*-xzVH7|inAfNA6S*pB@R&f)D4ks zE!Zw=m_A*EbWP{DOuj<0sr_%(hGB_7H*1&>XEfSyuh3^F>yX`fI7qZ?4~f!|enHZ= z<>bc*jv0aMvX$rk9z(@cz6@QKn2(D+ibU@_uaVuG&31nbEZdJk$l)D_oXD&hbnZl2 zmJ1+XBQ2D=i^9dZwy&LZhI?xsMPBqtb{?ro^GDZJ&vjyfU>o(q5(dRz=q7?e9Q(CC z^nVW4`G%S1^|6nSAz{;|=xjiRpvofhLSxZB;)Xc<*_hL*$y8OTt|6ANCsR500000JUEBW delta 1134 zcmV-!1d;p13+@RRP)h>@KL7#%4giO7a8yT-Vdg{x006iSkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6|y7B{N0tN$iBQLl|6z1X@6td{h9bceWBj2tfI~-by&~d^n1r{5s2yks{a4Ni^MVz=GvpW88 zg+}EHeG^W8{fk+sXekTET7^=~I)>kf;e@{DS<#%OL?W~-41sy317fI|tV3WU4-_J- z`Sn1i5JjB|Am%WM@!ndTd{Yab?6?HZ>n%u5Z~YHgss2GP*%&%A`Fy1=i<>Xv+o~gS zuo<`tT?^QMwabmhfAO0H2DJ~Ax9z~2la0u{3ae?=_w%jN07e}5G4kBK!sR`d{UwYZ z#0o1Oe4pJ2E8=<`+lo6}b73K_*;wVPQ6DFqOIO(v=#H~AN?HOLb?|stzoIdkqai-{ z9UY@nw>-D#cL3Q8*}OGyD0&IRZ-dDNXp!wJO!#?!WZ}V9<@>h)G{Cw@2KE>~TU?*% zq4)k+D9*t)ZmRx%wZD$FUp*=w`RV?uH{wU-+`7anf)&Co3OvGZ*Fc7p8v~-i{Xlg6 zzvA|@+F^p^%P4el(Md7LL;QXV0_`_V!?H1{EJ*d)3dIcGdjQT2)9l-u8`8Xn@0HhqBEg0#l=YGv5M>|h^ zKBog>h%`o&u15~0=Q>cZg)3C?wz6mP+G^I1fh<~?t+^fc>CdA*;Qq74E(`pib+<)- zA-Hs84>HQG-RIGqg&?{C>l}7O863sAL-K925d9D~;`dQ%!%K+ynhe!FFqIQCr1vR% z#W@16Y{C9YZX-1Q{mG@ZkvVqUqXht&tuiD)nh2=**n<#Z|Ji>_>qgtD7o?zuQzmP4 zgp2hRWr-;g$a9xhO52VCaOp60hNB}wd;(aH7Nb06++u$GXOAjl&E)A9uD+gxW{QXG zqi*JAn6@KL7#%4gjyYsaEGAS+w~C000yekr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*Xq8kk>ijMOb=w18kNA zNHyMQjy;gW%7hVrC@LikI=n^&LjTK=y|45iu3v6YI7~WJNoUp^uce*z(Om&iM2~wo zz>Igj3iqY7o&EIkB-v05#6Ds2*gQ#(`CQ`&kvTh0zF{txoRX(Hh3xmZgTv2Ce0wKv zZ*eQE1)Oz3BrE`nLOMfsd=y_;;SIux0QpjbHw4=OP8^+o$O^liLU^VDZWEX7;%RFj zcdSFmMaWqiKrfa-%6-(J^RcIVOUf%+XzWebA|)#2!eQSnvNs9$2#U-H4x3I*YAC0c z6B29%VP0F}`ZbxbU2W~|(eWd)c09Ggac-agNC_(N_p;lcw&JP?iRRf0UOSXi3rxgq z!|h>+Z9OJ`=`RX~&aI=v`=d`E>hC+YnLh3?>5G5WC2$yx+& zZ#MICCv`kypRc6L5MnZa;GUI@O8E_%HUQE_$$*uvAmtlnsRj;;>=bOf58V}}Q*(lJ zskr7QXwzIocawOk(}S{4v_mTzZ+YIT+MEo;7nH|K4k~20R`2**qPS z-*Yg3%QxHr-23hJLP4v~I|>-Y9MlsifXB&mKz?BV5OA4~$4p;b59L7B{QL?q6k*C1c4?U1{ku#PNNrLllFp65>BYNGWmqasPnMyMn_1g<4?3}p&&t9C3CeW~&Tgx^GbvpQzWJ?7TEkYiCAUxm3RlaHrP;xkb zw|$RIlz*0aKfgP26=PmCgFayxP?6weD3=PQObAoyl1aDdfU#fkRAW&Z*l^F zNg6%N#Rf{SMlnXLCy6LSypr|Jaa3fP4+%M0Rle*KL7#%4gjyY hsaEGAS+w~C000ye001Na0001!kOV;nI|Tp$002rmcnAOh delta 1111 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 P6O*6>NCsR500000D@=P& delta 1134 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

yhMXdjfmQ28|eZis&r6KbbyLuUa75R zrdBkh!I}XQ(V?_+qO=DOUF=HVEy$kiT=&iJfdYRovenasS&#@+;8a9&gG-kW^N(@S zgR{K>F@@Pc|G@kILz>_!xFWwP*Pf~L8$z^{YZ@mK-u|tc#;7dcfUsk%!C+FqYjHrx zv_xvAdb@h%{@}Cu;tG?8n=0GxF%ppn7h&Es>BN2=;3oqteUnnez+R zj3_~o7Vy1ZYQ-p|iMmJ=mR2k61wfE$R)P`H>*0U_o8V>`y5%t^|J|ElXi!T50zU&k o00ICG0I|8LR-D;#$N2;R02CAe03-ka005Jc1VIKn1poj50RHEL0ssI2 delta 1113 zcmV-f1g86=3)u-6P)h>@KL7#%4giO7a8wq?1->r?002b~kr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6olX{3OHiZ(WLaA%D0(e}mm)gLJ z5XGAYuG(|0G*(%El#(#mx?RwKPvszIACXZD!{1!+`O(Ed9-Hu_ANAC#CR30!YD~w1 z4NA*p)P(?Cu93UgwsD-PYGn5~NOxowyDMs2j|$S7l;+T4F+Qd_R_6RogiP*`O)9Pc z1~(6I>(eJ*n~H4!I?JT}52l_VQq!$?>v{F2ke(QOec)Yx99vffv%lLn(EYOcM*Y)C zx*Z+T11kD5NkV;=v`EevMPO`x!t&}+MwI2cICN|9Z2I;B=acwW0XoV2n*>&GY>jEt zUI7!Pn%|wRUQ>9%2XkVd#C>yM#Pd9C4BoRS@JE%<;tslBtSt_6{$uYyy_|>o0)1M$ z1fjdqlN^PA?VTw7YNgC?F|1YdylzNute#LDi&f-|ht>f&D+i+k99X~{5Qw_jU>+_| z=oRIT&4i(b(**>fg@C>pz@in?wl35{Q!k-J|Ehgo68|cBp$IAlm!TE*jCnzblD*kH z#fVdtu9=C7{noFT7u5in9laMwLtxLm-Rs=b5uMt9n2W|5u0si@zL>ICa$#6Te!b>M zT_%k}M$Qwj^zpm*r3Qfm2j_uT;{fGDtpdD00)amC&`CjT*;l8>d#sBNc)@=tNa)Kr zDI1dRLv4N5H_xcDU+J7fINU5`U}o3D&8XL{J&S+bu7!D!K9mC`2bw( z8|rOI#@%oUE_Hb7pJ>+t)v&4;@=Avz8TjCTA%DLCxKd#@1`+D{=t(aAuB=8=Rkpgk zZl7q8h|)GNX|SqN$Fwb>?9GMBZupW_JB-3?6E)M!w9j}y>>iOtL0H5{UkaRQN|C>8 zJ8R6c{$}+6nvmB-GDDU59jc($S+Gdrhg~N0ClU+ogagMx?PFrFDK1b~?!SaqUZ~!G zXp`g3+*9``Dti;I9fEX0Zld_%_Y!};{LsuFK^OV+g$VugC^G(Vne)Q|F(&QQnMJe{bjX@!a%lg~4TFwQO928u13v%) f01g0$ad1=?#s$7F1ONa<50g~|NCt5P00000hKwXI diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.26-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.26-compact.zip index 4cd36ba3f6a1447b7e9de748191ff6778da6355c..9665f99587fedb246e751a59faa529cc76dc4075 100644 GIT binary patch delta 1356 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 delta 1109 zcmV-b1giU@3)Kl2P)h>@KL7#%4giO7a8$kbgUl-g002b~kr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6)oD){n&(vr?DW)ijtebtFiB@NQ%DvZF#ce; z*mV#PL^a74Q-}!mnfl@= zd0dS2tDcm98yvx|7zTK(D(7vc`}m&6v#2m2p@`=QiLqj9`{Ij|UC-!NgI$`^2# z;`o5SZ@O-_L*dxdF(#GjC)pq1VVShs|IZw(?c^eV{;wVO)P1!zrcFkm?vf+t7E6mZ zunrw?HL5!$_ZVXXhbZ_o^@Ztx=km^bgCoYr3e)U;p25aGVk{~3cXT1qRB3Z?g{}r) z4~jw07B)lhRh$x2+BgC11O;_(xbctq_<&?Ma4Dkv3$5U9nlrB{`D%+ex5(DehPwL7}xwKJ=wYa{u4}r~JlP5B+=hDb4X{bB|u43j9 zRGy#KfkDsUL!9{93^$_}20Ze!X~ITM;}OWFCU4=D!R3actaGD`s>lxH-Eu=rf(wQm z(;im{}@yK6;JO2>>@p$E^$?$LLRUtwFnqgb1!~*#+vfF2L~F>lQK*YojI?Q29%L z7R+)3^aNkSSkiuyh@LK)pBKiImFa|kco{jI(aG)|B>E$?J~-U-@xw|qimwMjj!y@LPsZO928u13v%)01g0$ bad1?<_k+wU1ONa<50g{{NCs^L00000kRTq~ diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.3-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.3-legacy.zip index b7d8e5f03312a091fbc16e1e04da8192611bfef4..b0023845fb6524b95585668e7840e719de085b4d 100644 GIT binary patch delta 1071 zcmV+~1kn5D2d@bjP)h>@KL7#%4gjFJsaCeOQ;!7%000UPkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*XqEPHy-G4YhGr|L(L) zJeU1jjfYHaU~%7n8M`)H=qpMVL0ScS!*OM^6>A>gQe+h+I>6YLWgZrr2w04Mhuj=W zyh)5b1g80Z998ZlrAC;z-i2yv-tl+N8SuFGyqGo3TU4!IzdJPUP|+X9{X4QLaXE&5tB@wScF8wy~+&T$c~p@E&@~lm>hJ ze-SeOFDNE>_YTv#8ocYtSKCaVu~vwsDa&N(tOvjR0&tSBBL-MJ4k#1fV7BUKGcYh6 zSl8XQqAa**;cI!6-w1|pX7XMX=lFsS@i+4W>Wd@FwA3fJ)L=2svfU&W+J^w#7G)kHy=ZVIg^J+3_B)5zlH)F1S?H%wQVz*=nL&qMiqd`7v}g8E#C2P@g6*`?>)LsOxbw@f)#>YvOhe7y zY1h!@028tS%e#3ma-yPl&fIvw=t^r(WR34KZdE^j4dr`hZ5okVq!CFPSTDJ5>t9;I z>3$Xbz08L1)t$*?G1=Oz-V|=GEt>bX9IOY zw@ea$dwv8_+O+-w=-?!MamSNh0{vo?ZBC8D*+XG2)&-Wx5xUPFZ&tGsxw_0I`94HZ zCq0N<9nqs=-BfZPA!O7c!R2c8Xp+DAn?_dAURmIfd?B+H zm008v){@nlo delta 868 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 C?xoQH diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.5-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.5-legacy.zip index 1c7d60be0e52cc55f08a59b6e28e18ff4f871c67..ccc91e217eddfe4983a54d823182d86a32ac365b 100644 GIT binary patch delta 1067 zcmV+`1l0T12b2jIP)h>@KL7#%4gjIKsa8L*qz>u>006-bkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*XqMThPmYs3O*8Fo~S? z*fs;BMUfSzQg~s1h*BCuYmc0ki&Fev9agg}gCQ~trZ;4IA7UkUAKQFRl68UA3>T0* z$KFoE&9d&h5!||4{BZFjqcA?gn&YG%+qW0S2piwCzj5Iv_>)64w%=n_#Y`PrA7_;h zNDs9OX5<*CY1F0D_LrWcW(wri9RE$*QCh+6itIcxU@B{WzcjlUI?snvF72Ggb8O~v zE)G>@-C9HfTLUV!SJ0qdtkyqqJW3}5k=!c1&aiz0D{it*Pu!b%=aFrKz}{=68`oVl z=6*lHe6#+$5q0v}8CWDvoCJ7CN?Rs>iiIsmd~*SjE{ud5CoGD#l_hCN*ChqyR&2lQ zDMMBcTS}vU`CoT_fW5O8V0`d31GMLTlfme5MLiR) z$NXUiBPgtrGx{>^*}%OvY%A<&`h9iWr2|xb!5K?&UdU4y8A6#(WFw!DJ~7LFbyo;> zxJuUJar|OS)%{FTQp|D|#O@72J})D)3I`{97R-Eq(#8j9x&+h%YaeCjF+?)?B=`4< zx7w=w#|seKB>TC959ez5&-VW#^Ni;)Z@S&u(I^KsmqsT?|1u4;lN%%`NCt(?VgXOe zn#;aPSP{*oWhLW`Ty~CN++D5ymsvOlVTXSFYMjSxkuX1jMdaLqjY7nj8(G~kB|5fR zE*)flFPsrHu8;X2|8DlMVwnWWXX#Ml*c37YYjI|8@5z-1a6hUrmbp&Zi`y@CCfr&Zs|Szb|;QSmEtXnPtfc6aftp-{g356do;N zXp;YDo8OCD{bCPHzAGK3!_djwtz2K<1DmaX3JXKsMUkFnIklKI@ji(KT&BUJ=#9-C z4Bj7DX|)6}lcn67{@+YgH(Zt6*=(u_%r@pkj_!iBh}O304&7}_-Qp&b|7(TEGJ76q zJbXYrmAW*f!a-5ACXt4+HQ;`Q!>~yzt&MFNIMk+8Ip9gEz)+&UmMEY*AK^Wv%h#TN z7KcFk%nHO*D9r~4m-)J@%NHp_zqZ|xmP~Ypo%ul8`7~7krX!_7ucLB@L{>+Vrd9d{ z6~}baj3XLqBl^dR<6XAT{eMW7|K@KL7#%4giI5a8yN76A~-~0062Akr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6hZEy>x0#R_Z{F zY&lvW;r??}0L==Oa@9#LvM_<9;1XLIs4YSIXQ8(@Mir2oWC!ZRh5n7{Mj zwe5;lewEE16HJwrzAswTaxkyu1^0;oYp=3}_U6lYO=2#zmO1t1%8b*IE!;C;UA?R! zU`evENa9(;O~nc1mjxN8K!PAoQ2RQg0u=>=*pTJ5!nH<ZGrUcYvyPIf1gIua!4ju7@WANf&xVZ;CL<%X=YF_~b?Ly6gCVK#0zWA}oHR_j1dZLZQQS<0e9^#Q+0Ls0+Ht?_<{rlvU+U$sRY~WciMA zHYxOM$1T=T;>I zyq()?+~Z(!mJP;ykW=W{21#sTUh7QcTm14Uzu{_t%q=h<;Q!IFUL#OT0Rle*KL7#% e4giI5a8yN76A~-~0062AlSTwc25tiY0001+Kcw6M diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.6-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.6-legacy.zip index 4e338b468f5237103b449c29f33558fac0b61102..dc8b7ac3184fbfa22966ae58a927be3506ea710a 100644 GIT binary patch delta 1041 zcmV+s1n&FT2a*XGP)h>@KL7#%4gjLLsa7dB?9u20006-bkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*XqQGJmQ2`pNFNr%N5da)%BEC3Ptad$&`w%PrJ z`QZ&xz8@$B@{U13Yo=}1QSJf*w_e)}LaGz&|9^rX3Ow^d5ZkGZ=zH6P zoku^wLpL5(W2Szx9=nxJdtvuPW{{&gc;S&q?s15Hl;S{{4?zy zs$ck-H|Z`h&#WUR)JkXQQv2487*%w{COv=;33R*UT<9GY%sIL=fl#}kg7p-8Xe(fc z=ECtQU_!Gk#$E2Wz^F-2WkCkAUtbn7{8&jGw$_gcMus}?%Lt19e8u28nSESi*xkUQ z%gk$Xlyppg)w<;==EIiUndKl9X8K(mw-Cl-Knk@;7C6i4c(U zf{@iXCyynZWU}Crh_`Qe691cVVsmnauP%gN1LiL8iEo(RgqvNQ;#H9z>qkv#F;iL0 zCoxRx<)Mn95H(5qF~1L}iY(i3m++#&BoWk;spGnT7@CMY%zW%V#olGfY=7iCIH+Bk z+Vfd&Mv~sZc*pa2==D zG@H&wmpEv8_`tq@eFJD9y~YZ}8Vr~hqa3gM;AUu*-p5-x>jgp3Xm|o_1BKE3P#K|+ zJ4Yoh<$i-I_yx18Uf!qvKH(XeFbo&dEUO%U#EJE$J?U>*ab$d~uD=eox+bw-U%z^R zi3LiTbzzekO0yWvcnLykqElnaz%zO;S}<8I#Nr&QY+i}?`0aH5fP#g5E=tz}$yp?9 zU9w~6QK+Nlv%1RzvQfF}05#t^jokD2=UHUkBqLK4zlW&JIleLF`R3JJRpmlu zvKkn%(HzAfGD1cUJ-14EuJ2+PM~8QQb`PEq#aeTMx&1zI@`B?!c0orS7Hc3X>R1C^ zFrG*bmM+Jx*b}d?Q<<3}BHsVwK1r-lO928u13v%)01g16xv5quH|){q0{{TQ4wH%l LNCqkd000008ISS- delta 854 zcmV-c1F8Iy3D^f1P)h>@KL7#%4giI5a8#cc9M>)b0062Akr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6w6*8{&P3m5U#@rU$m{9F?TXN#If+NJX=c3#`s#%1YhAjc+8z>0 z2 zEGh0ah{ddfC-D*OOsnAMyu*4a!O0~YG%G_!cwp#If=!rzXSmO|kVynJ%_Jw0V1zq3eEzMhPFNzMdVkATpP1DfF zO`3qPK%1g}_~1+aP9QH3PtxlW&c%(^Ghy4$xK3MFP@QavG$7v`0_TFaK+AGyZ*Uv@ zr!110*_mx%)Q;{z{n5{_x^jrxvUPE@7RD?o8`!@tF#jWG%ege(<%8*{38W!xMFP52 zut{Ny%bZJ&1g-$P7X?T09}K4oMk#ph05&C0t`6~kmVQQ0ImQfehr5xw!Jwz%odjrT z%wpX>y9%PCkzFJP0N&oCFBW@?Z83qu9JQWR|L-yIv1Rs%QBL}>?dmunb*y*rzL+bs zaPI!mHXiUU0PNLS_I{vz>j3NL%mV-X;jEqH^a7X|I!<8B+H7q~OJnJAq^T#=F)g)v>=aML&pQcFg3MN+yAa~jnuG*+n!WUlWLW!R$r_p{d1P)h*i6HpBEh0E&~7nstS`t1V{#O0{{R307+Amq5uE@ diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.7-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.4.7-legacy.zip index 0b49cdd184afa7949a4688a1950e7d31da6fbc2e..af48a0628e035ad9c1790ef19dc7b651496e576d 100644 GIT binary patch delta 1120 zcmV-m1fTn*2;d1AP)h>@KL7#%4gjOMsaDwTB~ms7005T{kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*XqT|A)D%z+`oO8HRnr zD|+RWeQ7>Q2`pNFNr%N5da)%BEC3Ptad$&`w%PrJ z`QZ&xz8@$B@{U13Yo=}1QSJf*w_e)}LaGz&|ANG&VmAv0;=mequEI$B z7POjs{UI|*_T!I1KLy-ev6F->3)1s9OE%3nb_QG$PC^uaoHd#`zZ$)Nb*NMln%XgR+z`e!r%-yVa7TbQC*IOE?3`Cobel4$tt_`Zw;%1qcv@+_)eQEZ z+hj=EPdpl6-MEo$T^?@?)D2Q~^7nCxkTny|pUVl%&m+C_Aehj&JyvF&MkHv3CTQI?&WiL)ji3{OtZ*PsW|*)SEojQT$wIUQj+oRb3|cZW{G5*Q*3?6 z75+AP)9jdEFDnvXw3_u8@HLc&$3xg2Q6>yMV|(pu@hqGbU>5;YIxsR@`Tyyn;aRHmBopW2>)fAQ7%Ro%9%_VQL>-J5XEv;FG7PL{*Zos!=&0XAZPfiBvzk0tw;To!75(Q0EIbmS@X9Fuel zC`(%Osv2^b==(lC?(Eu-1!K7(VK%bOj9#0aFf1%9E$L!#ewt$OAtTri%N^R1tbZ)S zfXyo_`@32KV5aQgfiKRIw`f?O%<6k7KF}@&Qc70=*2&*q*$ktuFQ5mxTsw+GrC9QR zIIp%7Tp5G<^ptpVHaeDC#E?ez;m zVlq@VlWM!;%1FgGt+HrWUr9BbbHL9uFxZU-^eKtAIbwo&R#SxLcNN-j3YYvhFuzbs m0Rle*KL7#%4gjOMsaDwTB~ms7005T{lh*@C26zMj0001!Obzb< delta 939 zcmV;c162Ir38e@aP)h>@KL7#%4giI5a8#0vQz?4`004jskr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6w6*8{&P3m5U#@rU$m{9F?TXN#If+NJX=c3#`s#%1YhAjc+8z>0 z2Hk&5Oqe2ekW!{TYLz2raBB+pk2UAn$d*l zj`Up9(Hyl8-DXbST|X>*X2yt3CbWyI*obNuwXUB6wQt9NSuFYy3D<|(VVwm%q)Ind z6p1>x+Mc{j`&-Ct+zev$kx$tNPVc{at+xPNUwHR;({1^g&7aq9#6_7q1K@Hwdq9tt zP8a`k8vg(u5}NAzywnnzS64FDHR|)J9^(OP>4B)0LOmP9 zXv;{d6NCX-=1VJwj*^r>x>k@G5et&VrHuqWt~W3Do{IgFK^2&<@S?Mta|l%xH0X-{ z$THNA;HJ-E1p7WrZ(_Rp1QfkPj4lS@Oou;8j7eIqIfkGK38{=FZ+>Rt@T4IGpA081 zrJtaG4qUBHvdi737evo4FcYO=cit`q{if4f@SQ&$zwTmes|w zJJQG67n<8&jqcxWJ%dKtgApT2`_z~SQQfG2neS4WJ2KWMsy4$xWJVI`#V%IPuuQCy zBb}fFBa&`PJnI|A)OdZoE4e>FPHs(h~(*%wm0811+wTs=|y237yk@KL7#%4gjUOsaB6iAvQMz005T{kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*XqXw=FP+XnIO1aCxPP zVTx$G@yq4W=Uq^Lo>ekCZ7~hP2$eL_CE&GhmW!DBt=IqLk6re-rzVjqU*~T|N~3e@ zQg4A zG>e!#xEXnD8k?JU@;@I2s`z?uUXaD>u&puO$KBrs!Q zLuvx|S^ougH>_D0c6wplEDUOn(k2SWntnyCDhvhVS#Y446TycGBn+O6c|Lu?I5rG3 z6hqngNCKEv*go;a71~F)+n*1=%?Dp&lpcsZ2G=)J+e-2rbb;hp<(qm9%N_G_ z8nW+%vVkB8Y>bAu+Nvb~Qix!$W{&p$&gkmoQqmHCaS`gBKcZZ@mLga9n$=T@7brk# zU0;(U3$WlBYa>1>P5&pMpzGR&&4-3OA!n<2&aXCq!j;j5fmE4XZlKl8*k{jAE@MQp zL2JB6zr*#WMwQW%(?7m8eo%9w_tuz2>TOUBG9nLmt~L z9M4v%`m}XSRUS}4-WIvb;XJ`wnW}t2*24Q}lGcwC3e%&>zX9WIZG{dm>0Ex5v#QUH z`Ok`f8PGzP?&U5U;3=Ux-r?^Ugkh~&>@_d{`>0ZAXvJI_NLD)~u!= z0|yjE$|a6$uOvzY4h+cQzZ*B)+l1e^nk=GCOXIG5@!zY+rwhv}i7p4m^6tGiN~|_&GtRq3 zZ6WirDlw*FRmjMewX*aI)vzKRzRe&YbdM_p3Ac2Y95O&>%Weyi#Mq=SEI99Wqc=wjV} zjD%|=dOIW_Ib($uFNxHrj;*4cEXb~C3m!2-6U91c)8+dNtowGes3`q5&^~xcWf0lv z(_+!!$GB7jW3&wnR=~$JLrr9ld929!WYU!Z+uvBhx#vDZ<%1&?OgE)9TKMt=gPA%B zkC}hdKQxv7taXVggsKOI>VmY9iE(~4Z{zi~3L2%=J;Fdvrb&wfHo_MkeuV$ekxdCu nO928u13v%)01g19xv5r@KL7#%4giI5a8&U0JqvvU004jskr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6;{TQrmx6Zy=dAaCSydUE$LY0k9WEIp#)vU zSn`A@CqdnVXC$S6Vs#_`$4(dYbXqYSJ+p`{Xr6$?Nwqc2=O`b=eM17|t4SCNO>96$ z@&uo@G4sy)V5@-XeZUtYzK~Mxo^9t7&8*@XC5I4x8q(-}X+(b6sIKH>UJaCmRhkRX zj^$4vN@eVDQK*Hcg&7PzMvceru)cnRc)xZaZI;mk{O*o_r&=g(AF|pfb%%)J`tQRH71yiluAD{yhaY}kayK2b*46eBKrlufQ1a_*gs)t3JP~ZfK#JiNNt4dI zlzWcj;ES<;!&W@byDZ~*0TDNo1GAyLz(MYMD__O0==_UP`aP>fdTrJ;9Np>hh!cxU zpwj|*&N+5ib4_9)%LAts9kIv8^o)+>)K-3(IUK5yaU@jaLs=HSro@V6Fi!{znDw}7 zr}bu}IRb7!mnl$#&{U{8Ot+LbO+(=M#dD#-8<>fI1Z`axgpp^k_+*lQlY{I5au7Vm zXq{L1*-6L-Kx78*W*=Wcaj`jD2e@Qc`w{A+j9;2^u&cjV+(zu5?QAG-na`!QT|kliC2!uPjs zHPEfX%p?zL(7ihI7%3sKCy&ENtAjBeL(pupls^fVIE5H@=tGMeWNr?{G->CZXec^L zz3CIl7Z$2xrxMxlEU1Hni6x2{He5JwW|S9y1qgwW@+M>wqBYGs(+g^N#xp{Kn4&yf zn+;hxhe@5~O^rO#)C&NA3k{0d(-wy64YREZoiG9*-Zd-FIB-lbNzhX@B3wivyMl^@ zKUPhOZUQwDj>6j0B-8&@KL7#%4gjUOsaEj1TW1gi007z!001PD-vcL+LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#%jMDMT~L3XRWdtmF%7~9l{C^N;I(g-i-=E{8rYw-afz| zz~#!uOGP4b*M*}4b$q&fMvx%N$-ZaSYqnC)F-}#a&&sF|Q@K}twl9DBKUz){&^Vp$ z2sHXRZT(oyMO$LT%k}O?RXdiGuA6j(N#SrC)j$TRRYyK4Q4M8A?}9C$z`f1dxC7+Y zJDpPvNhZFKzRhrR+%9C(r-4YUeZ0dw6ta$Rj4hQ!tKMiZm7P?dvY;HJ2vApd-BStA zl+c!yA|0~mJeDnE>=u7O(&b3nQ(LNnA2|-vPdP>!dCQ6wMAaTbaHA=-+FyD~!lSgJIKRfS?osBiITBS=Y^I%QB0$%|Gbo9)Q9 z3=kee@+KS+mydsh3dTL*y~q9e%U0t`YPJRdt- z`96Vu#?zsb92a8?%}6j8$wT%Ge<8k?cI0V%t5O6Gnp(6@ovoYfm?gf zASgD-Vj_1(7X0z^|B=(#@ys8S#EmGIhtcV#o&P}M8H^>CJlILpds!?lgAYl9z~{Yl z=h6&IO(2l?3&I&BBI;qu_wptcny6<@a=e%G5#8(CD(-*v>ts3k2rUoxn#FFI!wRFm zf2!aBP6LjbUE|M(ZLh8D=4rZpWk)hrqAf!TRS2ccYb{ujt8uBdbH5(Gb`6nV5pIZv zPV?6l8D`>I*GRJ%tFbK;!Q0yBAmEr@KL7#%4giL6a8$0q=-_e#0037D001PDeFP_wLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|cF#aOW1C;R#A28u_fugF=wXxbwtV??Db=~(5D zce(qa1YN~g@`NZSLEVFAB&C01btC`BP8alaS}`0wvxqHdo`A$jwKdJ>C?CarLjvTh zNf-)EY(Pfx1fRAs`L&S!%yS<Gw_U{JVDq;x!ejVAW!}5EHY(CYmuGtfiff$f}_%kl5=+a#^gmjCnAB z>cOl@sCVA1<3)62@-#B4{vfz<@8o2;?ABr zE?IoDTOzNmVq~%$$G3g2mXY4`Z-Q++wP*V`>Mri$yVt+`oB0pJNUNB56O6{GBgp-> zHl10PUGXU7Dpl2s1>Ds;m7y)bIcjr(0Fdv-}e;J1)b>Fx*E{0;sD= zp;Hq#nVvMMk8FQuHNtvU!I+AdCy19~6DZ8mwjO4K#b{>RpzoCYdX$Z*bZ+||B_Fj0 zz^WJ=ty7(13GuvHH49sHwU z(VeDXbeh52d%l^BD~z-%JK&I9opTxbUk#JFQho&0BL#nr(n4W^eos)=u1t%$l16vh zdU6~&AuNV!ITdM@zlgcf`;4J87@0{{R30EIoo1poj5 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.0-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.0-compact.zip index 86d8eb05cfb71530e4b8dc2c0fc198c7ea46a9fe..412fa29b5d0184bf8c6d8386d0d322dbc51fb97b 100644 GIT binary patch delta 1340 zcmV-C1;hH^3AzgyP)h>@KL7#%4gj*bsa8YqdCL$5002}Ikr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*%4Eu#);r>zfYg@N_eU zJL_L>MSlnEJM0yIYA7p%vqie3?oiimw)b9jFcm&-IE%KLd6TdZ2nI_lUg*ju{8phS zKo#nfIXqIr)evQOxdUy{vLv;b6t_C1;{g+WtK{Ujv&AAB-mknLucITfvYqCr9&9OZd-ptTfE<{C#^mIGd>i|i6TA&;PSuVv0ekcr zwA(=uEQ{B0ts~x2qMdgd7hL{YAyEvV82?_d5S$^{O0q!+q(PcWR2ZHjgmf)M?^AED z{9%U80k-Vm>G$dKtG(o@6WVV(UO7FsA+YRCk}ic)kAYoG``(T*&${(2xsgh+Ciu`b z#mhZ8Gd;|ITEhd|Un7KpiF%6TN>biqhLP_~R+Lzue{9lr`3F-Y0RYL!##8TIwzkO` zg6?D+q;4?SepV-82EvbE3sp_$`_yzWaQMdTlzc&)Zb6HUNfr~91Qo_`*LzMeMNsZ3 zeZ(5)3^UqP8*NC6@HLs2<@@57saHq3NJS3ohTfNd8*hXrxXMG1ByuB=4dFQzT``2r zTJ{QsOx8Bq#+rK!W5mTPdCU@oq_M8U3yWXjC_%%Z5_R5LQZ-it5PcWJvBVHkLZnfR zLPw9-_hjkIvlldsb-|wIFH$PSAMiR%=m%S- zf4m-l;sr|(LV++|JBa_3<)PNG?isndYUb}(2<_DY(u(C2-qiU3WoYnjym|jT#nf&y zhVdo8nZGp+k{;j)vHY0zrHdT#$>HI1iSZxL?c}DLf%LrD|Iy;xA|8Y+g0%FbnLq0D z$(@JdplA-+*HXqD?~a<~0SMRHqdA(-co>m?IWTn0nhqHiQ2sHRUG5FAHd?d%DY-tt z<+nZDa&juAAAm#F?%?^PbG)Uxp)0%YQxW=-PjvN&#()3<`J?23Dx!En#JsKhVhQwa z!%&P0=g^INaaYL(@qIw)6Nm-N@g8w5Y5CL@p3|&< zyvuQ1AQ`5{ZW^pMXAvEL={TAcdwyPt2!UAR}9>6Mi`DD1oV7I z3A|}xw3ES1$;b%|MqeO58PIF`TNf3~c`=Xdz${%P@dsXvKjGAL(#8+_^vY6?OOSur znju*(-6Ghj)xeouN$$`kP$pHu^d>NWX-E(HKxTuN`bvNhqZju%Ie6rPuRLLZsZ>f^ z4U^NT`V44NN=tNU%*eVi$-bj(Ohsk7d`8zpL~x!Wef8iQ^RlQP85$MSOD^W;$BkF8 zyMZQDb+Q>g9M}+w927hP1y6OwAK)(9;{kSc$$tf{u{nK=em!l zK#?OwcI#y|`=^K-gJ`o!4346khqObSKXqAe0aH9J=xOen@dh%abuGf}PqB4XZJ*P0 zW9Qa*&4xYDLTXzEUPq+#TI2|Tef4ynh7wL%UEtRoS$~#chW1cy^v_0uso@6zV0Q}) ycXpE<|MTp$T~JE_0zU&k00ICI4gj*bsa8YqdCL$5002}IlaT~S22uq80001!8;N}Y delta 1126 zcmV-s1eyD~3*QMFP)h>@KL7#%4giR8a8&SRQxr7>004&$001PDeFZ0xLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|cj`bTwwP2p*Usr&MXPiwdShX5D;uf$s&X95-H zsdWQapnXr%1OL}qkk$~;UFUy`L_LJ*zWYBU6R`*0oGYKjSK}Q6O{(r3RozFeRQvs; zTGTl%l)R&jTN_Jl;QskIFB#GAS#Yz6rqJ09FWv=^r_&y)&DhptW^sQff-`D}gW1%986=;Pi1yoDLJ2)XVQ2|+g#_$+8J&C!z+|P-92HCo z-c`k8_}-})S+GiiySD&R!=KUE7Apg<(Hc+iz&HPlonE?qHHUnTDBf>FUo||`aXADoP_op;Ey=*-IF>tXT6UGo$h5 z(JN86e%UqE^8@3k2v)i8%7`DD|5vP7l#$zTe0sAM(bFhy;8K5UHJ$uHLkc$cLAnXg zq%8kqQ^N$JrWy4=%FQHroBWjyQ$hQb)8FAXkWshy1xHc8b|#YBPrPckUB-ln&e}U< zlobyco{d}m4ny?GT^@ql9ZiDV@C#w7rED24A-YKOKh6BCB~`)wSq{ZYbESY5ofA$Y zG@@ZrndJyOn+kvEzr^2<*m25-IJeA$5cgwzwk>+WzlJ&fm7PtiL|+SulOW@<&E9`ph~OI)efDCE-^wr79pke8;p#lT<)J~6~YZOy3% zLCWA+0V97s1p|6Sga9g>a_zMp&;-3bW^OP%JD@DZrn7l2|Cxfx?Q3I!(0x+Q;8bLj zB30v*v3RKvo2{%BKIc!FxrGL#{~=PdT3(W(5|U^AIj?jkW9frnW8!qY&W+{x^|@zt z`+DTwZ8mwG(4r$N4N2z5Sec8rMz~1|E?1nk?B6q7{U`a}#H{BQHqHUS$Z-*D(p4u} s{&{%GP)h*i_@% diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.0-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.0-legacy.zip index edb60bb67f4c3d24b5b2e7426afb9a130f1a833f..5ef78458fcd2ca9f172be77a0f38c4951ae6789c 100644 GIT binary patch delta 1330 zcmV-21@KL7#%4gj*bsa7;25oY`Z0006M001PDp9Ck7LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#R zn-1ylbTfrJ>tAn0e+TS4>=l1%C@X`rMY^Q-1&t{8Wk<>Vhs8ze)XkM>!cyI|4#eh|61os{wIfnNr2{7|srUYYa`| zlW1Mb(nvEVX5(m;g<;l9#5}UBFN>O(HdAnJu%!YHFRBStggT$LG=od zq0iMw&Oe7hVC`;J9%JUnt0elUEfS~DOV~UJQQvCQ`U{TIdHY{eiRA7|Vp_%4?DYD9 zo|?Iu_#IcY=Zw&?0Lb%M(wcA3CMp;btn8&UJ@lz^s5m2=p`d>>Th~g|)}b94ll#~- zHHY9iSyFIfVBlkiR{^+n7vVM|i3-GH$^vN{iE*DlzV?fKpN{TItZxvN7oHHvr030q zgt&Ap6q9R!fzZxI`1<3qTxcIA6vz2MxNz6h$Y}ZptbQRy2 z*~waiWRzE6NHccn$HJpS=gQUw%pXJ87@qNbHsx5&EI5Cd;3S!>eC(B! zdb1nx`^a+-(5P+l-0Z#ELu->naOuofy7gFf+QPj!)pUTZrdWp38_FoU%3x}y*#iAY zbIKaA4!nOk{d>&8#7L#@LUc$~vpU8@Z}V)baL8Isp8|YuLh0UQ?)C&#Oq#?-Dr;`i z=7ZHL%{}NO@Tog+Ln^vUv35fNmAq=Ic3kEu@z{ffTxFPP%TKiEaHVKpk)k2};>r-@ ztX0!6lCr_o>NQ69w{p@j6jkhA`WV}ifD-tFKy-gGHq-nOJf#$Fb%KdT7$U%{I)HDB z^!}cG`OxX?+MMr4kx0P_H-a4|ztv;g4R9yJgolK?QrImuF1K8?H^(uq6;DZ0{)D#& ztK%u@s(NeUR{-JO)>UQR6V%S_JIkHHdIaBkz3b!*6f|P>J3(JIoJNstHcs9fG{&_i zU73I6y@TcKO3MgQR(!^K=Fje&rak=xo6wpC)>}|D-4P<1uKpZ+evI@ii_@qnayoKn zEKy5h>Vz?2P#lXp237NSni#Z&Ha(H2lChP5l3M4({*r7DWkPqHV!>1X_+;VvP)h*< oKLbAi0ssyGvbm{NG$Rpa`~(010u%rMBmk3=1Vjct1poj50K80(tpET3 delta 1116 zcmV-i1f%<=3)~49P)h>@KL7#%4giR8a8$>bYh*G6001)&kr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6{!}4GlpX|*g{HU`EzbsH-(gY(>P&NgXY)E$;VX7e0upG5acd+= z3sDp!xDZ{n67ed(=py}Mk8v?amzJwI%rDjGz!1hc0^mzl4~uwpW|-hg)}R32(nWK( zK5hHLP$WcIZvb{Coz}R~L(>kWNUx0~bmLbFA%Exkd4I&#pJBF`3y1NL-e_R03hL4b;_P_k_D6jav>I)j65C zMffYG|37HUXN8fKs0|d3jEjwT^IeiBf)2uL8zyQNhro|6o$V+Gu48ddIeuyMOU>=g zCHF;t^?%Jm=gb%WCEPaaq?Z#3u3CCt)hej@z{kr$1F^^M-5A7Ye2R$DVm){H^)^ni zHych#>S-f-WdM@1Ewb;oWHNub%QMa`X7`+uX5VRF^&>gJ3<5S>1*YvHkCa-*NL%e7 zG>$f#lJQi$VowBM{T*>#ZMPO_Ph#)XKVwRNgViGiRGL&V)P1CaEyP-%E(*CLfmKt< z-!(rVbIXJ#I)O=pThranwhi{(pu&UCUAXQ&^bCk8DAA3bNY|E7rR2)LbdjnjAcH+4~IK7sVeeAzvhE_>q=(R)lu_1CY$t78i&y z^D4E&9B4rUZ2dgSqD-;;MeU}Btwa*_4- z>K}G?E8_O=KRnAB*NJXIs9t1dS$}*mI>?bYh*G6001)&lUM~v26O}f0000YQWKZ} diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.1-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.1-compact.zip index 2e5be71710a7af4510fb2fa747626133eb66b62c..c1a178c347fb4aeec728872a307e9013e3a6c83a 100644 GIT binary patch delta 1339 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 delta 1117 zcmV-j1fu(-3*8AAP)h>@KL7#%4giR8a8!_LVtq3N001Emkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6fE*Vf>F~Zx z$CWw+n6VSa0W+|n`dfM|DQ+{-Hy|DA!_)@V*gI^A(0h*pMB3@>w|1fftjXu(OI!jp z`FVnfZ({rYx6HdzPs5_Zp)~1;q@Erdrv+AKharf7lkQ`GuJ91{JW*NNLV{lh=7L5W z4G1_%M>AN8Y}bIOUig2GlK4JJ_{;%nvj6_C`uS}HzbE+hXUrU|LCZ}{meQW#&)@Hc znPEW*lz}s#1)1!jrCY^j~OH(kQ^zT}=LX`bG3sJK|DtQ3N zi?cE}feag}lwm4z^ZuWX3(G&vUk|H&AEIDoDbdv8v<frTg=HO>B(ArCI!m4imE2O)B&@te9U!wvdXe%sFT`_FR1&oT# z&0jh%uJh$&bb;KSK0cv9BL&F+3jiga!qa}32UMGFV!lSXskxECuLXNN0%aEACvFzy z>I20$zby5I{k8yVvVr!sgToKJp^kATTeUyag8I)!-0gR+IuHT$qFt=(wDYi1UP4Az zj^Jy5G#*4w5z&=@sRRaBRhMVMEpuja>3pwsiSut^vRB06`JK1NM*2Z{VKr%YboCx{j}$-sl>uxgPeqh(Y1mW6k2 zo0D}OOzQkpPZdY+F;kcf7k3ewm-KF0;5!F@EY$LL`9imYo`c&+)o#%LC{Qt$ZK_JD z?ss#bw}(S}A4YZ9de@I2culUaIn8&tvr~|1%ub!7+izw%fkr|CnBX3r3{v#ktti+L zu1O5>ZLJ+9K$vYp`SsMaK^awbGh1xiq7Cx>YP#D~M_QN1&>$dd=h;3Xiqj>JcZN)V zZ(qb#9kR8WB5~LO{4T;cuk#F(fjjT< zy-^QFn<*FWOpj#%GK2t^4zEqH&C@KL7#%4gk5isa6SfOsfqA007()001PDp#&$9LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#Ehva zZGQPmQkh}axS$V;HYDsn%N5N&ge@jc>}Jp|0Th>zljT8NUMwVLItqV4GyHIj@2Sfq z{Y>qk0Mq9~+TZ^Tgh#?` zb7g1OW|;-Pzv>tP#fbp`=Jc|eR8~2|kwGDSj%LsWVbeXhXGnRP z_fPJ)52(~QDkbb+m#Q}==aG%;g#XCL8@%|8Q3fsFwiQB(*HiXSC_?=N`DN@i1P<1* z3gYwxREFxMp8);^H*cD%4H}5vzK+iuUr)tTS(AfH`vIgG6O39!4GB*Z^<*UR{jj6yr!Xjs?C&+|uz)i%9 zjE$K@2Y4BTd-tG?g4VZWwb#8Y0GN6jlfru+$)=~)`~!bM8^D8d51KUcIWP|28Srr%_*`8T*<#j zCq%hKe^QG7LM4XLb)K`U%?d#@ zyEPv-To~!WDWdp#uA-v1_#BS;v`@U`N=Xy>)Z0gZ&U!$%&(#p54%YU98ECa3`Xhvo zH35iOH%cxW-qPq!HKe8wQO4Qv<4iSTjphXZ!smY~YLxqavS>5&@z=s)GeQNtA^0Z8 zF8dYK$SN-t%{EcjLiZm!isn$kBpKk|3y{i~+*5pHpl?jj#{Fxy5mN67p79M9Sh|D; zt@>R8hQznE?kU0K@?Gt9b60~LjTmPrVBjk`T0BFcg*FM}pg%g+JDEp3P6fkUTwvyBLAj?=S+_Nk;??MN(n)pNv z=+q-0!H6Tz|8$M-08mQ-0zU&k00ICG0J#mhsa6SfOsfqA007()laK^R22TY50000| C?TP*X delta 1118 zcmV-k1fl!43*HGBP)h>@KL7#%4giU9a8&gx_&qcP000&akr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6iri-A8F42;_rTca+ic=f3Z#o2T{8Bpo!;0TExL5x1~YR;o$b3=ZzFtjdNkt^-AqS zU$&t;Ra+dPtdXVL8kn>jr@H4Mq+z^UtdWZQP*Yp6(a5tDO!)kd$Jn7iU$dwX_LG8} zO))ZC!J#z4Z|bLUsX!O<-vFct_)K4hI?I9fF>?^KKfh>yJ#&PEhC4oqL}1%krWDljkdu;G19g~%4>dAgO;FF3#Y}?l?i)QL7$d3A(}6()YN-pXQX+wwG}XD zOsA_|)5qlIJ53GzqIkVveMiJ-36t~GaL-9^74T9tRmRLQ|Ki`QWIaS8<)ApbmYK^K5}I$=p60W~>*9RWR;dFWr-LDrBYxQwQz#fT1iR z(%W`_{en4X{VxU*eJsFy!$>zEJUh?2&E6C6P>7PIq7ypfeiuab53=_ErDr!Y&8mYb z;q9k0+d3+QwwFrr0Jdd6vC_KpUyV^X(%rRLdPZWqb<=!Ie&Q zZMblF%d*q2zv2_cmvrjt>f3i$wvZx;$$_PRQf&|O>9ZqEn?}Xp*)U$7z~bLiQh>da zQd!N8hQPXjx82>$KA59~z-(i%a3Na5Hq`ao={=kEAu@X~gs^VxBlk9lkTdBm!1ih+iewPeI#X)qc+`3XZ_h&4u|Ey6K> z;G>j9_j2Be9osQ)gb{Cvl0*d2=0lp2<&BVeV2paiq6Dtoa2xi0m-~N$NraN!cJB*vCxuK40hS}8QG{}n#0pVw0x1UI&LQYog( z1xz-;TZaX~#Lhu&neY8gywSoe4I)c2e!iQ=;n>z#g9^J2yY4?BhN+qV`2(MFP)h*< kKLbAi0ssyGiE(gL^(**2Gz0(u77mkX1xN;V1ONa408A1n?EnA( diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.10-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.10-legacy.zip index 19fb8284c6388dc2af33de27ea414852a012b13c..93c3f60689e2e852085c1f49f39854d8e6630058 100644 GIT binary patch delta 1330 zcmV-21@KL7#%4gk5isa7JivZeY2004>;001PDo&+b6LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#x6I#YMO!MQ6$LB1=xiFd+ENPAdjF zdP4R!017j=US(FWBeAfun~*n8xn;cPMeB$NlM!jzDj>&LF2qEh6AGd;m_E}sc2KQ|mq~2Zo58f|j51F$;Y|kH{Xu+AHe3o1$$^b8TO9Z~nM=#d z$am9h9Ptg3o^D=iAAEn)-?I4Z58^?^AZ%@vO4lAZQGC*NgN8G2u9LGT{HRK}_`do= zu2&`oVuZZ-H*SyRVhL7Kd&PlzTA%`wNGyP@D+~!1kSx)hUVPIvGgmZUmurubyQ*Ji z00Sw}uNQW56yn)4pp&II5dTSI=<1g-1i=GsDvM#ewkcon@UwpfS}*-#uG}OkY~ZH_ zg+A1P4taq?5zv=7sCRsC;$LYjY~18v;Pgd!uiFe zL)$@LlXd+!C9&({Alt!q<1I=ju!fzn@MZC(3R}=>w(@^ek^feScJL4c6l=(b1n!c^ z-{)0^vHy8$d@`=GjP&LL!crwnvY>P=_Bx%O*#4r5D)woQh)X12#`5klM=i=AvT z6>KEoa(2+=G>~vw7;gZ~d!hgZx|U*t#4^-kQQOfYfBk`ox=x?q5b!n+=NKZOL}Z5! zXU{)s1!@V+J8D9HSl+r!YpNObaMkGO@G~>haov9kemtH^Q-Fsth@F5=?3p!t+6nL4 zC#Z~aj`G%PxPbvO3@@B8KTChxK*CD;pc>J%*yjSGzRRh$12wcFafKTAiv+k&a86S1 z>K!Afhhfqh%@^F)g3-5cpG@zN{ z95R3VZ_4#(HKhA}|MD^iU7#7Z#dfnyTH!2CLRolQ$JdO9WkuK(3}Z4Gb`*BBG!^~` z1}dj6+AC)Mp5?mVORSNhif_GVaXuj5$H9=I9|I369}-jetg0#_mj9%PWc5%>0Rle* oKL7#%4gk5isa7JivZeY2004>;001Na005Jd1VRQp1poj50Cwwn6aWAK delta 1115 zcmV-h1f=_<3)=}8P)h>@KL7#%4giU9a8#{eTgfp5006=ckr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj65L4Xv|}&g<0d z=nh0n#XPFETz~P`1>PuqE`yybeB4N6)tUpLHyabS_$0Kk`*GLgxsi}_TNGSxviXl% zA7L44_pC_PcNm49+LK1o3r{*l z(^cPwr%D`KIMC@=)UE=eQ?mUJnhnP5jH9^osl+yVM@(+^5e`}4C7Y*f4VSzB#P$&e z`uB_RGsP2s)-CgbFLFZd4fjQL5NVi^OEwU4JPy-72x?Dy1XbUC^;^fJ2kgB}Es6v- zXwzg<$OMYc$L1Bkr&EaabG-}NVW5KnPyhMuWQ=J_DW@+b+!>EZkU$lNXPgYpavo`m zFU?7>648IR*KTQcav7X2)9?)2BOZJC#e_Yq`cut+>Zo^iqz2MR7O_Pu@1AJ(R$c5Y zFo*0v_d=FO_%F0R+%AW>m_5k=4p7sM`$o1lk$a+ZnShMk?qxe+1RxAAo~vB?3GE!8 zmeuK69gdlM!?slp17dAhHuqBHy)w5f~5q>1{zEz7Wx&$4- z`d=sn{ehK6(GA^xrfbacr%_ooVDq1FTUMGdRpvita6=P_>YaX3g+bl7PnkAgu?Pf! zeim@2zxauShnS9wAN3es9b&xxXe~Nkv-e_uYJhoK#dnQsId>OJ2OW-`clJ!{fhdvB z(U&rG`(kS*X3jh*p?3A=)?#L8mXEq*zII@VbrAcpTTpuAzfG+hr^R`hj+E)-?cF_K z%w|a)@rVy`>yBqTg>*@fpE3>pJRu|dK2Ok8^i#O|G1&@T2M;?0zU&k h00ICG0EuyMRIOlJ$uR@~0KyKFRs~1~a|8eY003pB7IXjr diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.11-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.11-compact.zip index 4cff3247bea5a173d62fff64356a307e835a8802..b2aa46d608c60ffebbe0918a9c854bc2a1596d8c 100644 GIT binary patch delta 1336 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 delta 1118 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.12-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.12-legacy.zip index 695617f511fdef83c883e90b3f202195f072e631..bac3cde6e23fab9de68d620bef58ca281a6bb588 100644 GIT binary patch delta 1330 zcmV-21@KL7#%4gk8jsa9CpmJ;>^004>;001PDo&+b6LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#BD{!F_ij(mxi7l^suHM@KD?^8fEgWY2 zk#uK6hmB`es@?%FmM7tbVmH*3l<>r$bb{tmgFkYw>@Yav!A9VsfjODvKPvNyOj$VJ zyQYK&`LH2j(>Qlbi(piafzb;xUPnOk9swMCH%wC^FfR3|g=+8d@b7Bb=e2;GBKd=3q;CSuVm0yIL0u8j8%YdSOrL7ZGxeXi zr|yDpGm8yznn4Y5L3mCCEqI?Q`eq^wblAao znhBo>cUi1N^>KsHgh7$Lt-F1I-h z&plzfLH!wL-kb8%ig(`!lby0y=p8it9Nm6oNN5crNVb0#!TKdMGjsg`bJgavIhjW? z5$Fd5@*fv6CHQR8uIj<-`tk0Wo$Tsfqkf0}1+aUn_Cv#hQEXt`VqJD!>4UO*tmC$^ z4_0{Ue7H<|HMNqIu&{pqW(T2dW}%W?zCqNx?W>oOzWTW%I|BUv=YNqyDYL`cq%WE8 zY=jGZlvRHS^_FntyM1|q58&YS1Wn;^3mn|0b82OfxN3ayKPXlaHWD8YZDF*fDH?gQ z1cqVS$U*fT?fTJKVz385K6MFLTpQ{2Zc0fyj4bTSP&HMl631h(L^H^$pCEqoi4I^q z&iS9TenhF{8fbBPE0T_X7eTMEhvs6@T%sf7Ce44fXaA?sN_Ky*FZ0cp?rra_J05KW zt<{858o&{y=7d*IV3M#~;xjPhd&+@q)9FV<$rYk|4Xi7Mz<@P`&l7`=bN>kf^;JaY zU%fbDb{rPFPO5-Lnn|`35m48F83-#}ckh1ysPPU~3a+9_*1f_hW_BG|SR^haxp7dm zykdW;qp(}e14Rio%WTNzoracm2vNj$syiVfa0?S1YIlQ$nVTL#Z2&`#oZbNJ(vSgj zTG*O7R6rjP<;-OIe=66Cci+^004>;001Na00000005Jh1U?2h1poj50A+Q0H~;_u delta 1115 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.13-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.13-legacy.zip index 1bfff04222c8c147e7b87da5225dcfdb6967a83e..6b575731c8c042f4d058050da65d34d787739a78 100644 GIT binary patch delta 1330 zcmV-21@KL7#%4gkBksaBs^1uFUk004>;001PDo&+b6LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#BD{!F_ij(mxi7l^suHM@KD?^8fEgWY2 zk#uK6hmB`es@?%FmM7tbVmH*3l<>r$bb{tmgFkYw>@Yav!A9VsfjODvKPvNyOj$VJ zyQYK&`LH2j(>Qlbi(piafzb;xUPnOk9swMCH%wC^FfR3|g=+8d@b7szc%hn7!OecKfoK-1!XGo0WJI6}g3oZ0qmA&uLiAQo}p$67Cj!rt%^O za+e6u1T#$`Y&h|@r0{>s(5Of_TcD1Px(G2wvk0{R-{UHjXX;ThTpjPL6c&R5Pxa!& zNt9e4T;=i{RyQX>Ah^0M7r@6At|tR=ep)gayH*sxQPuCucOki3g8=rIe3LS=glmXf zpCW=#J=@uxS1&WM0}847d$QQ9pSX^yOc5T_EAs!95W|t8Ygd0D-}Q$y?sU&qpAL@t zf@(B`;SL@`i$IK!PCUaoR^Om~Jd>y`r%`;iUpW(&Khp95x|1c5ZB zzoJ#E;TT{?NNaziM!WN^^LTsDOobFSWU&UNXSTGkKyT%!8P?zaP=I98;2J>P?Atr; z&M_?g6}BlCi>4not-)%ST#}$ZaGg2 z5Q3IsmlSSOH})_}DsoX!CywcG0;&w z{lbcTsUpd2rgGn}D{6T0d6h8cS7bQxCy1L+_Qm&~qG}J=Mpfz7)UX6*c(04djGuMK zg<@4(0SUe**Pp)0u&Jf*?2^!bxxgdy7!ua(aXHUn*@;H8emwp5;Dz7yRI;#GHh~^5 z=Y>eKONf8!W~*OuiV`81qCHccc7E@YnKc<2N3&GE31%4~wCZj4(w0N0 zM{xv3Mv1(rAd{K+#)EWAM&+0!;VL$3P9Q>9jlO4iDu9|pAKq3AO7Z4r2G~R=>NT~|Y@tkNO3Ywai3HAb?6ryIzq zX0O1GeSAr!-t>%FJp)EhLfucORIPRyOgW=_P_H%;@}|)uZcxT0l>e1vP_9r*0Rle* oKL7#%4gkBksaBs^1uFUk004>;001Na005Jd1VRQp1poj50F2mzF8}}l delta 1115 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.14-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.14-legacy.zip index 7053dabc7a98546199c25dc848bb9bc58ac518ca..d7363b8cc6a1c5a894c1dcc0607ff282774b9d95 100644 GIT binary patch delta 1330 zcmV-21@KL7#%4gkBksa6c4zzO&S004>;001PDp#&$9LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#^C>1r4u9AzoPpLQM(H;p<*(KzD&!pzK9!27I ze)TEp&TS5?$I^b^)t;y7`pMuZrE$>psiAYNq}%K3E*3uZive)Mguv*z$EP}l?Dx2X z!_P{5dna#iaVx9^oOMAYEC7o_Izx7R6kk~34Z?{4`BH;71ls{l9G!p23cH;`c%}hv z6PNAcX=@;NtV75}$XOadFP1^debk`wF_pSQtc()c^8)}O=uTj7Nq^q3 zR4Td21aQ10`VhEt_6a64u`LNcuE0NW(_1r+z;DbKsFfD&uf(N2yB$Kg3&Zq1p zM17sp6!y$>OC#g~|V$Xy`=Q8_?ZPOq7j zYO(M}JuE$=?0`zyqSN}@I$6zon)T`%V`BWkHPL-_7YJ_PCNwNA$0c-GURM?I~+$^K>an$?O(MpNvBTnMktNT%t?Pi$)ehl@2OMY)0hU_ewO0{ zy;;F%XUSbJEg>JjHR(=p=ZOOduI}f)LZK{)5OW0iK;d-j7yFI&Wm>F4KgrkFe~l$e z_59tYs(2$O3;B8;5`toVxtDA-`-Y2B>=nfrx+-?&{*c$WOF>@m59~$bb9le1Ts*z; zb)psF;fsI3mbR-wH;1_PcQloWXk>$Cvz!{+MsG|VRXkk-(4s2Etf}k^X9=kiik`(3 zn!g+kZ}sV+FA}lfbgYLQsi~GfB|;BD`ipJAhs&!wtYhGduZ~oNFYozIZxkrsDu>jIBr}2agz^?9@QjKf~K`f!#YRd@d zNzWBko92sNNph<6t%e%2y~rZ_?or1+T92!i6ihd&aRzVRK*db|AdYtcP)h*@KL7#%4giU9a8#9BYM?X(006=ckr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj657(vo;Na# z6?E)d{ps-*e=;L~0Q?$;hPe~s!Hx!P(8YRrz5iA}PUGPKGVn=mL$xAf=SnBi#R=~p zKs3eFI@h`he=3?9sRCzx7J-I^9_{X1Lg@XRvgS1y_%C+-j=7wCy-F;BXl=~UhS>xC zU?I%g30xlH!eu13a2t{J)>^~8nu$|X3>DG7;L+?&S)h7}Mwj_buK^JZ#u$#eP2DqJ9jZ3l-%h@J_nV}DkhfCYfKsnzxtow2wkVHC?0RV@ zI_DU+ZYlNa#pD=JyGgm4&3X2X_B4Mt)>!{>zZ5Xe-T1qSKz|VxnBF|=N!vO7ugDi! z&p@GFtnQJbQAhb-^x!1ZK>ISzkvFZ{g+zQC?CeK9Ni)eu*3AT383lZkO{8u>P37yV zlN+FaLIA0T-vTJxHN6J)dWo9XT+s5l&Ltf_BaNzmBvDN<)v^#X`endsHsW5q6oYRd zi9bCnfrG<8FeZJsq;GUcUhf;Rd{w|C<#;5L4Q$~p9~{jey+0Mi;RcCf1bOzm<%>%Q zoJo(Z1>6KhoQrQJdkuz15&8Oi$pA{r9SLoJ`1K3XYNfrUtJPA5zG>p*6vgy_nz4?9 zYd%@O?(mAskU4|}mXs-XaWz@Ic4pm^c^hvfbl)=mQ-$u^9>5@gm-ODKmAV8Q6YuGP zo+epGFM?S&|Jrz~Ht0k^vIGN7w~8u_4HAdc;I|2``1`@i7DCh+;CpUe#Vfj%7)Ks| zHGjYo_xrqMR~Y`x5UpzMx4>3U%gH|Jop-w)WUY=IJP}S+xGuYTo`s9lLI=&93!L^C z>&07`&_a6~Wg@E}e2}a7OA-@_*s~=L057Xp#&iXpFkg_}R$*?(#?^_nvk8rBbEF^3 zp)z}nQJrqiJKs9`h?{3s2zo#qNt4DhdGyRP5$bM9E-bPUdUY^8pd3*_{f#w&P)h*< kKLbAi0ssyGiE(gLm0N0{Gz0(u!VZ&E1xN;V1ONa40OSZ0iU0rr diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.15-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.15-compact.zip index 091a23323d0b456ec592ea8b22aec1e5b20e4d3e..3abf2b29840a089f42838d340599c79076427b23 100644 GIT binary patch delta 1343 zcmV-F1;F~=3APIxP)h>@KL7#%4gkBksaBpRh++%{007()001PDp#&$9LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#;QQqO`^QB1uQU8-NQ;jI*Y{on8qvb8_f9TH0+!Fr?I$Zon%@4t z`_MWu!x|~P_bh0ZT{&@)Dxz4u>l&qh;di&`PXO`yB{N`X#^VzA987;mfV_82xB*-} z$U-^2K3NxVTjzVXZ33+-4k^_m%{KB53a-XP$roBjz=)oUgj^|DZuC9x5JV3Y57!lO z+SqtV!5BYMPxUn9CY}S_rkBXcXLjrj<(V#eZ&S3}k}Uv&`7GR7DeEl*U)1jW51aRa zIB0ktcl#fUxsg66Uod|W%5NXO`X~*Bj6cM!i>^OHC6>4~6Co{1@72;dDWuHS3r=uN1ME@d;Z)m>De zp1I322Wl}5*56Mg)CRiDKdw`r$2o*x@o>*5ALMs5RBsrsFOH)7MWhRbU{${0?(5$k zi@N5bKf?`F`M;37vp}#P9J2$D|LxJqYsnVuUv$Z!;$vY>JmS^Y$xWX1k_#H8LP{E1 zG-IuETfJxWcvzF)8rJt8Nmq3eS=>>!hwo(*ftQHl#UBL6JOgcaJ6+y%K1v)B*=+I zERCXmWpoN$C)%eVB%3gi8l{XG(?&k_&JKL8PGx_()QaL8fQ_5qT##`ZC6zhr(pzq# zm{4G)V%4IOtpUMRziEmQ!x`2H+V!E4SOY=g-EMtu%ide8lqsiGvIb7n26igfF zuibxmrexI(lttQwMkk>>3_h$mk?yrZRfLXwkDonF{CbOl!ihZg%g!HP4N`lw zmhrRurlgE>W{jOQ743kAK>xiC0av-E1A5MCD2EIa*{x2&<{EHuqM`X*F+8-*$^$A3 zm<>QAEx+&o+-~Z8P)h*@KL7#%4giU9a8%DjDR49d000&akr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6wgKHJ$s!d^>-k$fWwh z{sBJo2K?SISRXKdm!)A{YvQVKMa3i8L@gTnW`cF_VYj&OXVj;U3+8^O_?1Z6!Q4RD zU@spUJ58u9zL^2Vdx+NQ{D*ZR*ymL3z!#ggk1Am23yejU=W@Lji#`7Qx0Dz3!Z;$5 z$nADxgP?HnG6k0*9Et}SN1wRR^)JUG(8#7L%vwBnCyQr)ip0y!$+r%PJP0$DzQ$U2 z@nUbOF1qcjc+s!tldWvrfN`2Eidnr@JdU0+>8>x`t`P$?+$*}?-t~WZB{2P|D8VGx zdMH96(yPQC=zBwpVOt($)aoARZws0%Tvyi~*2o~!RKAyTvY?i%LcYLdn+Y(emNFxs z5h>6d*(OJSu(hhNr-u^v+I9se(#r0=<3U-eC-ab9Z~)@#qYH-4DJZp|-T&vy+N7v6 z?Zp9cF_?qrl<3r=mC7~L2xG8d1mn=Wrl@>w{%Nb?Z`+G5UGi)|OcR*_{*k)4UN}_{ zb8SCweO`k%8R0U#0%Xl@_?%;WMPp`s?GTQZn~! zMH!lZ&job&eRo3kUMB%i!3||w?U5jMz(`6WvdAm+%EfB**=C0*w{IF(|BmIC+w<;gdUxr|@{F28nIXb7) zxL8}uo1LrJ%he`i??}>*le*9G5t~g5)X&?=rXx*k6B$i3yXECW0>s65=Yl>EX z;eomB?keH|U_(Dw^=Im}gTI@@Q%k(%fh+a}OnA)j?8a%yZ7vsZmKA~qW|2xK6l_H< z<=bouZqh#8C)AAh+_7QGyM0$(7bPOd?)BKZ>AQPSjq})Fr5%Fv#s6047Lpai-}!BP)h*< kKLbAi0ssyGiE(gL&qFD2Gz0(u77mkW1xN;V1ONa401{Fp@c;k- diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.15-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.15-legacy.zip index 0132ab493e5aa42b094d6a73d3f5f4c22431aa08..d0a6334d895fb6a11a659690b08d29fcbe564c4b 100644 GIT binary patch delta 1330 zcmV-21@KL7#%4gkElsa81w7()33004>;001PDo&+b6LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#;U=zprH?`-`yAx1Ls$E_Yjn+20y;&o1( zaMzLd*wW^E_pt1aS2+lZ+h@Dju$={}O&?qT_P3KDjaOc&JmQ_g?pimqJl`$t@l zqa>E{B6%~}8RUgym6Dc^c2WM0hk;3-^VDmwtKk$)d*4AP)`yVF1qyydx;<2M!%G#gSkkOIK-r+Gk~f`b3pRAbB3S7>RpmP zGXaf=OK>#S z!ORS$v%I|TvpT3t#iZ%VMptUgKMxESBU$4bYtrucDG?jJ6TsBVX>j_Wbl$aA39Fj| zCnYkqoARoqP_z1Ls78?QXZ=Wq(^LWjU#3tk8%*&@<}yXNkr+D za6zZGnK#)e2~f`l;>u5Gq+H3ks;{Ai1v>nyo4hOg+5?S)%y*I;0H0ddw=PC=ETSm6 zm>E-v3cXXa3tM$4;Bc-Z@>lNQ7^!BPcnKRh{4Ak}rkPF8Q8mqq#!2n* zL)c=VrEwGb5t1sYBS8%Us{nf_(UHOP-Q%VRmVmD@uK?7(PdP#@Sz^ej!Q zXeeR^0Q^4UK0FH|u@%?Gkelx7V(Ac3;1RR|+WbnA=CyynC7Ov2!89brFgqPv#CU@H zCfnvcwYnW5Z+f=eCta-oS!tyN@!g2JB0j!gKRaP?2oHP@_c4A~wy`U@X#@QNq?{NL z&!DnxO~JX(+S1{(A3sXh{nj<&ejnn+q#{Wkm=jz6zn`=j-7YOmsT(r1lsr=*7h^&Y zp08`Om~(%MJ9rL^do`ka3>p&4u9E_hc6g%<_e)%82qoIRFtxr6mnff?4vqBV9Rosb zLr;oG37Bow?s`|ymOS;TSvGs08qBwj&_cVg(-kWExMprp?<1!K0%2Rv*ZU+!yCMsY zi?K&V_pdZ^Y${7PWM#`^43ncF9{1!Nw~N{l7o~qPtB>(Rdcv6`MEE5~UV#un>~i!XBh^0o?9<>WhU}B@SNnZ;0zU&k o00ICG0KB=WRyhF}Liq#$0E!a;03-ka005Je1VIKn1poj502dv3!T@KL7#%4giU9a8!yLk=!u^006=ckr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6wgKHJ$|lPXOTo30eG! zhS?Oo9YlY2D$jm@wG&^WOLnzoWu6A#llS(wInxUgSd=4(t{qrXf`OEVv*m3%Sb>~K zLs|ta(ZVaf&@Ljk+E_B?OF6+EYc3Ws%lm;B?=Mja?Fr(A8y=)|)aq51P-^nl=w9-J zy4LMSN#5rw1A_CXEHWBfoUsxL-iADb@F8tnF2S#~pM-ROX&k`q-0)S;wZonXZ*z&XY@|Db`78pCJ*4a9|T_HB*GbLzK7$Kd$4v-(JT za&A@>mluP7$xy9}FAk+iXVTq32;_SRhkiOl)dR zh(P6x>5jk9!BC*R?*HA?5rLm3D-9dScMK&K-IvH8SUr#yn3&;tencb9!Pu6+-E+aX zneg*Av2u%puDK~w{Ys)B0l%i@f>$a<8N9<}vLo$(lotDmwsj+>M3v=)#3k{5Q1UKx zjzgDT!%7*4=_04Eygzs>1K)) zbT6!~j@u6H8AH*8855VKm8MRSspB0^dF|K2`?P>sr(T{zB1u%V5bJD5z-=NrB%uqI9&w8>i&G1%f#FVn>s|roW-%^g*4E<0o#+`<|2X^Q$WY-# z*0Rmv+s)tI%$IkElNxg_59_q2?S^}uH869scrR{R;s^=%W-E);^~}w&`1`mOrA)8# z5D5p+B|pjbu%|tUd!`{w>1<+CzSpOLFmjkP+jqV zYz6VO>k#Qihf0;c|ETY+2|J4ZP~;Z+jCWkcD7<=sEYm$DI6g>F3l5l(aq#lQtj7Dw zZ&+N)CSi30`|r{D@{x)|pyK=(%sDtDA$BV5lMY2wG*FCYWRnBzkTyCXj;if^gh(%4 z)wv8&kXlRm?FMLK`xl*m@NAJT4~|(cww@7>mC$nISzB+D3)h}1bNzCV5>QJ40zU&k h00ICG0EuyMREiss+%W_I0KyKFRRu@}a|8eY007(p9_0W4 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.16-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.16-compact.zip index a93c136c7e0fc30de63ef91bbf81ccee2e5bb770..53d77d0a88b060a659a1ab99b404526ee077327f 100644 GIT binary patch delta 1344 zcmV-G1;6^-3AYOyP)h>@KL7#%4gkElsa6hTf#D4W007()001PDp9Ck7LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#DvGV}*pz!Lq z)6Ioq7$NK10gD$;>KT^4p;)xZ0tn5zGaWW)41N7;9w!}wW1(`44>$_8$Xxl(49c#A z@$k@(z^m4Vj-%ye#HxxpfXHF$AuCv~YwgcA`;D+GA!&B}0Pkfjz}tWSz^Uzm>(>=z zTD)92-NsZ;ZAo6PueXyoTgjt*8i2-r@f>cj8 zNrM6C2QI=H{dtVg`e2t&jzQQ5S~>m{a2Xc%bDJ=fkY_I(7v2$q( z$h&}iZ~D|6t7$83au=8!C`vtg*eq`b!r_tkUHwc}*q*K>u(1XYnmTvqxOCH2bMfu7 zO5h?Hv0)sc>TErdysj3@N_&u2*7%xQk)S$i-v40JKHqN!772eQC@M2SRGt75vRE&B zua7!pFtDD~`u`DmP9g%H2vS(_*ukdFqum-8E5u6z{Vo42hjnhj${kbn{@9*6DQ)n2 zO(-hf*!V z0>XQIdxas|C>?)P?eacv@1l}RJJbn?u4A+V(O+-l$MvUS(c|YH>L2cpLX}(CZvHNw zkcG-HJxc24Gl9#e+|eF_w&5bBley~nX9bD|HIXh(7-#91P9y6pcpBM;{3I_Lf0u}% zhENCd$Oj)3OykI-phck`Usi%lVp*g1hmfs#rFOyq_3D2Mpa5k$h)%P^l-WtA$}*8r z&w?B89;pQ+W^)Z;SLqe_d5=H~ZhPhBQsGvQINsw;wOYaS;RSadC8g*M{a2g8%c%=D z8w-6sr%D4@g}-NV*01N}C~1p8$m?_OWsUeZp#bBz?^OY3k)mOE@*$2-(z85Q0ZZmso}&F|Wj23xUQf z)|h`3K8jf|w}p%ImWL=CiZAYhkdSPT(CV%@`v>tboM-`%etKz?0+CN~rEB5T?JxUw z9+{7DIbaY3Z^}F2F;L*tkB>W#QKPp}7!xO>U`9qFOwUhcah`63It*b0t*+)wm zKMfAR+x<)|ZTs65e^5&S0zU&k00ICG0K5&ksa6hTf#D4W007()la2&P22TY50001P C_m9E= delta 1116 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 delta 1114 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 t=4Q*VP)h*hx0NfIjkpxHvO$7h|001P^l=T1r delta 1119 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.2-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.2-legacy.zip index 4f0b6acfc6204b69af65ff07a49e9519eb38f88e..50f206f869cc3a98ae5ab932f61f15b6f9d7612d 100644 GIT binary patch delta 1330 zcmV-21@KL7#%4gj>dsa6I#_=xia008b2001PDodhS5LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#L#yEa?sD@qHv^9`#?=7>sIr1Y5%`akfFC1_O8)D58T zBH$gI$LEouwS1cjYm62-P&R^cTUUwP(+(FVxf_Unc#B>DFlf;Qu7aAUIax(8<%_{I z-{j=yJ;hSu%7wfg*WHhpz-0QIbv1M$@n~D6BE+y`DAGt*j zL}!n5!VTesvSaYJStsA`okGypj={6nu_5Gi)RZ)a_U^=u)9fS&{KHCpnH#KEl*mp| z@TAU!jC_pNT@M_8T6OK&IXfWtj422p7@sUcUspb6K?$kF7#0#cjFQXV1o1J2b8!ep z9c6goU)M%RtsFpBumgWqA}>*~SjFwZ6ntT%zWo7dM-SxfMX%~~YKQr48L7$l#r{;q zY@*+}Ko8X&@%FqsFrFGkl9^Yrka2!?ot~-}-BIshSJ6VuHuPm!CT8jAIbM3e zQ?`g$@Q$k{mWd)&$x350e|VGTQ_TSbEGs=Ax#+m#jcoqtsY0IhKsxEl)@Q87u0(89 zwXW6wk@)56B_fDP`$t3YbMD!AdZy)@YG+_EPHw;O>2BhDtnI7HlfUu{$h_Q#jE2XO zJV##Z$W+TwMn8Z3c$$qobLw^nt?(}DfOdmpXeg4h!|Hi(X!~bGlwu+qRc}`D7oF;7 z5kZ5WA*9MJ8pDO9$N zD;r9Jb9nj+$?$2#a5E0htoKz|&FoZDcI|@2pTV7n%%n06 zEa>H_C3Sy?X;&y@E!;%6i*ttASHo4uUpPWi)^Mw_A3s6}3ZC)p9YmS(qpG6yYQOf` z4Nfha*8So=@9Lo9d>->0z5JWh4^LjgE&qA%B809<`NuXjn0qfq$QY!$Phc|P3^Icm z9#{a)dbbk}VB@*PB;~Lx7C>C%cw|(k>K1S2x}v%ZXoVypl@6y{JuX=EJO15f>pGJ5 zVb*{1fSPe*#yupVX0jT1STeg^hqCv|WhoXeb~kd+Y46?ifFMGcZjP-8aO=YzI-!lq zq_tC@0S*!X`O928u13v%)01g1O oxv5qLIrxb41ONc;6951t0000000000005Jj1Um*b1poj50CdTZ$N&HU delta 1121 zcmV-n1fKhy3)%@AP)h>@KL7#%4giR8a8#;wwiz%4001Bl001PDU{1)1)aPUjIE*u~%Fy(#seI|cj`ju5Z;@T>oA805S6c2iiQqF8K8OfCvzf^Hu zJ?-@WUO$%`DCZVoxj7r65srUgU3+(d;k9yO0DpbDTNd#1IZ+)_MP0!;P_qhZ2#N)} zGc3uPA;@;X$BPgvm$~?+pRQ|I2HojXLkq{?FL)V}W}tfPa$U=(_J2-c#gtv@btwm9 zB{Pg6j3~C(!fC={N}H-dGL{^_YJxF61-dI^-5_ z2Zzz+A0oPgJuk}}_<@LpM{q@<1pRIP$o25^!R83n7%9-q*i6RS%FIq_L$+U?KTSjZ zYG)5rDI=NX16qv<-wjr6`5{gT8-*B<;n7J^FPjvB@ouPky(fphPB)J zMLYpNYX5@^%X=CAJd}U3l63)(K7FQR2#Rc9wx!D+6``dN>BzbqdGJBb1<-Qh%ib+h z#v2H&P4U`Q#y_frpu^5rjQmqBl2q~(x?Lq*tip(NlA9?&@6&mE`KG&fY0WVx;e@P> z5E7uaVk8HuZzNxID$H-7urI7zJg4BMeOXlRK}c5I6uCFP{>pzuo6KYZuqduOx|Rpj zhsNh%_*tcp_~9VJRUdIVeVFK4gW4r~KLm}#`#-`HCpV4cRVRJ~5*DU@Q>@DC?8r!g zL+W9a5_ZB&cJ;35i;n<2ocI0U8Dr54PxWmutY}lL_nfh23_-x{u|G~vhjdhK0#(3(& zo+*coabj-{+sO_Q1@I#9W9k@q{};mY9p8PKrIvVR0VVM>@H{9Nm#TsF@SgH5w`&@U zQQZGa^o7Z;QiJcGA=-e#aT`~920j~=W#{bM+rT%H)hvIeMGX@^6(sM&CbOYRm^E|? zWut{UP(I0~Fp)`$Ra|a973HE3vL-5kpMyHspq`Yc<$As#JM`s0A<%A`TW1(lV*8&w z`9V1_I0$oCG#m5bPdXZrQxv*~&WQ=tY6qOE?cb`{e)cZW#4c_l|2&Yjm`D-x zP#>9$+Ma)a_MX5SIEGI_XSwLR3EUJm=lpB+cWi^-B@9%(oyaB3M_SdEoIawJ0Y9n+ z>g>AzDdhKp!(}b9<@KL7#%4gj^esaEQG49y1x002M}001PDp9Ck7LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#L#yEa?sD@qHlr$X!z6soG{KMY^?Y(cZ#Fi8Kv*22n_ zA4e0Q1ITP8{ZF$I-;(^4pj#VEYKneg|tTqWILR6t!DZ2zaA+Vu0wjZ2&=b)Q} zkdgJ?#L~doQ=}BvMMJQ+?elo>pw0)=ENgVrwyN}2mkvJJ8R9mybv}RG>K9x^?}<@0 zpq;~E=0dq8_ksc^>=|#q|E7PRh<|o~LqKFU&|s`r}&eD=C3xOZ*`W zR(pTACbpb33x)l^LE3-dGm>r&3;`ii&+7b9HQN%e0m8|47R}N%7UP@*m=9et9Ojnl3$k1iKJkqLHroZvK`fb1{VA4~%kfdT@ zJDH4qfMJyg5ZmUzAb{DI?NM%7rooHhf{Ue{Yzc8KpP>m4TGM~sf;?-u%v#?+(%u7c>*$o zKXY@X8nNzIdqRmTJ$i8jFs6~*x;CG&_@lSNEpY!Nvoq_X$lf&rOY|Vw7Igz^_B#W| zE{&Bw|1Vw3lq5vOOi8#j!Ada~=;IGXsFlY7fefJ`#ln9KQiUbdu%w#d-kGfODC$Gv zcBiojsTV!&ycge0!qb4mi~+VjkI{pjxLJl*bUi-46Vvu2O+1}nw?dU+aR-{eY%tj6 zE*{(Z&|9ZywA;S)l%{VubQgM9J^P~D4KFVV27qtuCvbj45AX|HI)ON0OmZx`7d2#~ zLBfUi0AGKPb`4!LTj(<&ML7$EH9_8&BtB_LUQsPUO`Xz3abk|b8HgW4cU(+n>)_1G zADae3l5&`6TaBZrQQwxNU(XOqFy|-S+FeJ<%-ih|=M|1>@E+tN zTO)1cz9yaak0*4$b+=dGZ9zxcQ!~Y*mgycIJ9WAn-MTXhAObFL=aiQzRQALhwqGWNbs@?v9Z8IFT9}JIwFd^`|)1 zD+}#B*H#_b@k{+a!`^O<5!@uVLm1y52q`Ny={`(@!3>>m0lju>DNWA}oB$c*#YSYi wTW|l{UWB_)O928u13v%)01g1Pxv5s_dJG562L%8CKogUW1V{!+1poj507qMkbN~PV delta 1116 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 delta 1120 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.4-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.4-legacy.zip index d0f8dea26aadab27daae129c42a19be5706a1d9c..262f42c6547d71366dac441e2c4c26b6b8950a24 100644 GIT binary patch delta 1323 zcmV+`1=RZ137rcVP)h>@KL7#%4gj^esaAUyemV05008b2kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*%4UFQGzzs3O*8Fo~S? z*fs;BMUfSzQg~s1h*BCuYmc0Zsep%O9#L9Oq31M0`s!w25l0#K6YONu%!^JYiMP9* zZNYN#73lGnb@a8_(l1~I%zvtQl}5PaI*8>@N)>|FEpwkoe6;^6 zNa~dGgby*zy(rl>lEuS#&>Y78PH`ldkikSptI8wVmQ)gdbr?p7QcL+)Y-M?|NeN1R?b(y z70k7&WT36z4$JAb$mSasS8a@?wBU)i==8RwT_wVoWd+u-0bBhTi#WO|SV_@5vED#8 zr|fT}!;oYu$>LUl1qJu5tkQ3<1wCtkmc|-;e}IF3vy?XK(2BASfr~9A{zK3i+rr@X z(&oroicW@OReOa1J|NH|UlL2g^&sLzLwj}l4nZ@jzddSy-M2dV&mYb<`1>IRR>@r3 zau10Gr;85vS=EhVAmt+iEX`fp2UiLNTv*KmITSHz1ItN%N@cor0t=@`=iwW12dt;M zjwNA#;)e2F+Rj@{pwT?rCPnUsK{qv)f!>`?tGjh`&g2_u-y%c@g^OkFz_#VWLzEg6Hjx(cK-vp|^j^fG~btaO}TE zt8qKC(!zqMeU5UuKH20=4s`t+-N~w9<3h}THUZl@tQj-tz4!X!qWMYpg*%ole&7+$1ivCR?ppyEe|DZ z=&f$vk2pM!bL_oqU3Wrm$4I18K@53%SL7&f=`*t&B1-7hPvSptecUwOX$c1H-7jc- z)x$9SI=QsYGlAs0Q-iLJCLlZKpCXkNvoa^sjrZ2#`epD-TRuQ{K9?CfnsQoEG z)Pe9dO4n#aoCa?#RCi`;w1pFA;_I*|EmH3a|w001Haef0nU delta 1117 zcmV-j1fu($3)Tr6P)h>@KL7#%4giR8a8yE-4w5Vc001Bl001PDU{1)1)aPUjIE*u~%Fy(#seI|cj`r(`;m;-|evb2l3qE<4ti6&1)M6GM=|Cn~B zd4b;~7w*~gXrQ-ff1GpzEoFbH3|`3naT0Cd74+G9m08cp9Fg;vC$ zmfT)BbDez18n*xUtmvK3=B6TdZ!sjTi>mzXqOuLOa(;53Mx{8SlA3jE-QE=kOmHYp z2d_y%6nx0a0$BIByL+8P-o|H)&eCF;P<1YET#CCAXz9ues}cVlaN2)YJ&*>~dllz2 zp&t3=wRRbh!D`cv>Y7V`P5gF4s@JO2n4m2A1$b)RR^@tBw3hMY>E0x&GzA41j}`N? zSYM^N-bmb5y(D0eU3$pcHxGduQ=cDlzqdKaC98brrA1o9N?LENzByw%|4Zs&_JMKm z(W$IEp|GYGYpDgnVI_aT(W(`$w$PiIgb;aU1uB0Krl>GD!5UNkOv zwI97$`qOyzcZbeej7DLT+9E`8gIM$LKrqB3glBW(r`YATG}CUWA{8cFf7UouxFm-z zyf2#^IjeW1C$@n!F<2{(mFX{Q7tL#I26F0_zCrqYu_kx5Ad||gMH5Q7Cg*W0 zh&EGupqjP-R}+6vx`>hFrv}|l*nN&D8u2A138A20d9n<#Rw%FFd+Sh*XrFU-lfPX< z8f7Val&vuOe1Nq~X=tXu#}^l!`5Q+a6MRAZ$8>m=x&HUIzxNE7_@RK}&z^QF7lEI9`G(LJI&4xl2Zi zgQ&IPo(1Jjo^>maL=fujunoSu40_qIrs>? zM1A7{hlakH!Mwc?v(5b%2N*eh)*2pG!+N3>^#m$aYbCZ+Zv*WVi6Z~`C8Ru1O928u j13v%)01g0%ad1>Zl@5|D1ONaa50g&?NCs{M00000OBD}7 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.5-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.5-compact.zip index 76a09f1a1e7ab91ece440fec126859450d6be7e7..c046f4207217c7bdd05c11546396d9280ed4e215 100644 GIT binary patch delta 1323 zcmV+`1=RY}38xDfP)h>@KL7#%4gj~gsaCIrC7%5R007Ankr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*{7iuD~(9)S0pd-9Rgw z`^z~8PX2hMNhVQ$c;X=4iIVjjes;ss6zWtOXuYQ}0}{+OboqPvT=2nbcxZDs`(hg+ zdqywM+~C7D@uEqdH=FFV_!3|R-=pPwCoU)AAIcYtQakTDv`P>FkRrj*O&_8O&k8g_xbe$u0J&b=WS^J9U6+7A@Tnxm^<;;e# zDdpAG6qn+ELS!7lL}O5Skk7QoSCK}WDC+(5j?1tt8b=S!jr8Og{UctWN)o1dC%sgF zZ;evtLX{yoWr098il!To?B#Iu6iL^rkA6iwguA67BjJtPu#`jCaVyoRhN#;+zgJF# zbuH}NQ?_8z>C12pUx@!eR!Kz1$7reISTePqZi{4pFHIa?5}^A;zZBD=E`)^R zPc<{(z4SObzQP4I2iPs2d#sp4M`RDw*oI2RWHN7qllf}eY>Au=OJJwf&2k|{S(sA+ zw%}q(lViArhNZ>#D}(SweHjjZQDRZI-dE1*)tV=($sJ-hM&rwq`5BHWz zY208t64bluXWlfifgIhNj>n=>WCXz`vCr0z2yW8jFWrBcYQpKqox)tsv42YFmR<1M z`L9zT8xTYL%Rke6xN+{p4N{ECMru`1mh4rk%>c#<3XimJb62c56>fV*qU2)*}3QzuVFKX{UPQUrw{$=5LR8i3?_GAlcPlEllFuxz?W#e z-_x~!jw(HesAkXHiwN0EeL4a^#SRbyV9ZmyG8FJsF8xdCyc_UjTPU~O$v;L^dIL5& zG_D0MGmy#fexr(#{v?vppVahfJ3lpl5har00iRlbil4R;hm0qL?OrB zBZO@4^k{%p^HEs({k1WmN#R+7$;>4Lk6L?>ns$vJ<%9uI!_^z;2#+7bS|pIA&Qk!5 z)<;JXk)bbP&Zm4WfH@Q9y9ujq7;#!*YPiwPsm6DUSTnJyRj(Ds{)=p4aR>B&=ruD) z3`>tK=`NK##0~@m2T$YGTfIr&9N&Cl_2p*P>jXHPll5~u*r?4yaKZCeY>6w;o?_cG z+M!JN3EXIwQ0>>bc#|xwMALhz8KB2QJ$6_+CEvXe%jtz(vj6Z)8zE3j0Rle*KL7#% h4gj~gsaCIrC7%5R007An001PDhy+CjKLr2)005~bgJ=K% delta 1107 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 h0000000000004ji00000VRLhnoCGljD+K@m003Esd-?zX delta 1107 zcmV-Z1g!g$3)2Z0P)h>@KL7#%4giR8a8zPT%CRW~005~Dkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6AF*U?`_`vT^TjuIBfBVvR?D?L9*B-tbw zbUwZC+U&b_S+<3eiHN7@bB~~_4Ian`OA5wF<^xpekI#JAZyIPxLW^LMZj31vNI;WJ zFT{v9uoC@$HE;nwyP<$S;rM#K6NwF81f(6ZHFnoY^xRCVW9#k!0(3XmQ}QQkfdb)b zz!ar?*GOs3vT=A`FSZ`SB%!o;2@UnATAT+bX|M@A__HhAp5whCvH`mn=~S8rhvZT* zIDP>WW?J1ChStoB`D{VC!cPNKtE-j-^JsvoM?2Yn+mmv44}0!6<%kD*Thi86gmeH& zGZCB5$HKW}FQZefAk&S>%HrQLd3M5!+dV7q$GaBmDHDus+k2aXjyImBuQ(?iChodN z$trmpF=?Y&DJ_^1jxPl?fJR0FH*Rmx_OQ6TWY0uEtxWGLxc8T;XYr9|G<FxMZtqnbRUTFDOY?$#@lnlt>h>0i2G4?+GE80qWeSLJAm& zS-AxoIcy?9F_)qf1}ajwb;6??HK1Vs!GgPgf%MjtHFiA(OL$Pieb-UoR!BxvAED64 z%B51P39W`BBv(A3iJ9hgd`hoh1vP9PI*jP%ov$`MjWJ$)H|9}dh??na(&mu?T^E)e zc(wqoOwnaglR4$F;!dn(@Z*H=oa1E^N7ThqCZaV|!Uo|*XpB-nGJ-DGKy-E!?M!ul zKTCw%Nk4H=)(Eqp1G)mjTZAsA9oc#Hv?>&!o1vv`9MMFmI(YXkrQ004rg3s?XE diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.6-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.6-compact.zip index 71f0136c07a8f7e9b480b59fde90e64a6278d319..e668e3f960c6809d3a1063bfeb69989c7702a343 100644 GIT binary patch delta 1325 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.6-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.6-legacy.zip index 514056024223ec0ad3ebd61cbca890d5d8996daa..236d2a22767b23b2c6b72f9b72e81331b386f7fb 100644 GIT binary patch delta 1323 zcmV+`1=RY`36%>NP)h>@KL7#%4gj~gsa6zM0Z;1$004Irkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*%4cGJmQ2`pNFNr%N5da)%0pZy>(-t~~!L&Ym{TkgQ+J0D->fuw=v(lQ_vn<;Zm zBTVUZmAJz0xQ7HIk#8HBtXJb*IO)SuEr{@cgs4z6ViTyEn`rw#HK;eScDbZI zcsr45QS#}x36iFEJZK#CWDRyY)L$2g3t6&{yS7-rH*DiIv4Tq(gfM&d>nt0KuWk!J z^%k9@l4Yms9wLEskjv1@*YA59=jB!k=3Qo510prl_|c6;R@tt~-aRR&tP z<$5b&sp)sm-p*%Lh_3Jo9^3KDY%Sr;!5& z%9eXU$xNOV*m73k?WhTORxN!^Bp2;D!I8?R$fUmlC-WQ+Q|c~jsLIs1*A&50BLRcX zG%icxRzKl-CoQ9qw%H1{KA73saFqiOq2vNqOxol+Buc(&TZ8dE0j3@9riL=6L`K zccQ6f(EJf~g3eq41YKi|NGtF$!LcoZxIwwb3jmV*0Pw@lYIkL`XPJFvfKfdIex4-; zfFsX$^c8(gPRLDqTRiMB%*O?vEDADiV5VF5o3J3Y>sn{$s8Tar(5a#WL5ZY)4v?B; zy30WDeZZ~TEL5PxNQ_gWo(v2D5EO}PfO2sl`&RV7=XgBgU*%a?)&L&1u=G;m&zYC_ z`OiY?sD7I1;e+ZC%IdM4wnn+|{pdt2P)h*jVG*cM|{r hBme*a0000000000fB^si003c=mjp8gEd>Ao007tof2jZf delta 1104 zcmV-W1h4y*3(yG|P)h>@KL7#%4giR8a8!ra7)vGu005~Dkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj64n(4`Vy%1)6`t7KzS}`e z@KPS{$$=51>34x;R!w!w^b@b`pV2u^M|WV^{H>Hz*e1w-FiB>TkCceJ$&z0O=7L5W z4G1_%M>AN8Y}bIOUig2GlK4JJ_{;%nvj6_C`uS}HzbE+hXUrU|LCZ}{meQW#&)@Hc znPEW*lz}s#1)1!jrCYT0{T9xWicz-H+IlYIg zf?hL82vVE8gqD-U4)cY1s>|LXo4->>Kk>y7HuldL-i!S#fuX9?3od7CO!kRw(n{-{ zcK@)JMo(x%6wHt=nPXI*g!!V7N7vPitt$#qHG}gIcEE+>APE) z7tWqHA<5)iB8QXgTnFe4d4mfhU3gQEQ z9x?~*QX(stgt`dQ3`;fV2Mx@kGxx>UP^XoM#;S{#JWPVMHzFQOTVr_lep*L#&lpl>%J z3TPblYC$ZHv&4<-0^DA=cZ$GX=@}R#Y=(&nKmV->vWiek0Rle*KL7#%4giR8a8!ra W7)vGu005~DlSc(e251BT0001hOc4wK diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.7-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.7-compact.zip index 4a6cfab0f631ea5e16c34cbdd3aff4a6a9b74924..aec323d997ca688584fc93221a2584b89349cc26 100644 GIT binary patch delta 1327 zcmV+~1@KL7#%4gk2hsa7ZWY`p^o007Ankr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*%4f|A)D%z+`oO8HRnr zD|+RWeQ7>Q2`pNFNr%N5da)%0m96M#X$)qA@s-!9z)PS#`8g0H=SQ}unpWVIx{iP(OW6_FK4qdXsvp&wd77$}4IwO8k3GEM)-xk-p0BdOrKZ zD1e_p`w#90yOK@l$>m5S&CnNoyqtSMcgRkErQGtSh7!`|$Qt#TME({ztzraOE9ooQ zM?Awrp+8uETTkfC>YQ3zx{MAr%N_@gKUDo{9uSMBJDtxECRs}}VE;~1<(*EAQpJ6{ z)IFcP?w}^Wx6)y{N0Hs|VuzR=kQkKSIIVLhyK)reMj@!s#RfHy@Owq#>~t+a6-tnx zsBz*drmaM97s>w#(7M<5rg6;IH$q}?raipA(0v7eew8j8XFs!M(`R!k(qL3Lq*d;C)J=Bv z48P|k1DT!4@xe#!UP#}h#x004VpwU-92>%Ua&GHyNPyk#3tph5DYXNXbM&btzI~)* zc%%7$OW449Eso`2sL)3Gs)TBfS>Dyx!=eJVKvp}+Mg4^$#{H7@V5v318Z_bu2YQd; z5BNn%)N@8l-NpCp46TtR3#a+|tV%7?Pf-R;&L!c+G$k{doL9P7J@P~l4YNyr>1+;E zo#^EG1x<%#?I|lWv(D&O5#co`?w7zo;1@)HwebrlR$j|Sc5=i|OnO*lxW?NAV#7k@ zB6R@S4*;jS4YXoyREe_vyC;BEJL&%iMn+Bfg*xn9q;JW=fnr10((#NkhduM)X)t;n zhcau9bv2!}Cpz;b3VUfzN-s9oNMi*V+AHUv@C^{io~H_iOI<{d)2W5dond-MsLTC- z_q|dy6rR5Kv&A>flQOu`f~8F{PH|^;L31EN=kU>=wT=WEfw53^?#C4A7+^Bnp)9dE zjX$tQj}@)B#e^^Eht?GA zlRh^(n_~1=Y43@>ok}UEUEowd$<9AXxwQF zfs(AT&(*6zzhP>Yx>YsdN(D|r+(+0BQ@J=QXo;BJXxUl@NA5>Lt}B4`TG95I?}j;j>D#c)1FwN76zGSRb;yU^C{%gP)h*< lKLbAi0ssyGxVfoTC-`i=0|fvB0Lc=Qg#<_jMFju=007!}cWnRw delta 1114 zcmV-g1f~0}3)2Z3P)h>@KL7#%4giR8a8#jsnzJbc008|B001PDa0MrkLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|cj`&S(oE4Bov62mOBW<`LvzfF~?Ww!1lVelR| zXG?jow@(GgE1%*zcU%EZ7uA0rX?(gh{Q?ra$-L~_GR>>`)Uta8jVPRD(JnhA(%~tb zspNquLmTRGeUkCbT-)+=KELYj8~60SmP=p?Y0FW*5X=xZqk|#;Le)4cK*^c}@*(2|e|?L6qvf9cNf$K$bPtM6#w2+^TRlRCuBN+` zysyr>7cP)+oz(%bp^|?Ijwt`k^~B`*{4owR{LVa%d`1+BvYp`1t#nn z&Ze#WFW|Y9kb06fim-# zTCv>RUo#QCDD!R(@0t9{!?PTqHx*ly)exOn;k;1?<5|cxS`>em0=pKqmr0(ZzE0$J zAN=Et+#k!PuWHj5AWR7l@-xDYa4DO<(dCFf=&;n7-ka8-UCw@fM@LszGj*Dds&Y&a z;6qtWSp8Bwt(mzc?3<;=nrCuTrSY2IrPQngH+6;5=^sUMqqSTKWH>_Dxe6_RW?p^g zG)mxLqRG456k~t6y?=aLi7?csl@^|h3_!>VRQpZexU9^*x}(5(kE{KCR^t07;?Gn3AQ*;>~yw?0+RIl;Tu0T?Gn}q-u{k^~fl~>(zwDI<+yb_tb z@3)=!vf2ZZHMZRde42{fTsV6g?tP36Pn3B|wyJgSI(>g-p=G@q;l3PS#289%%lNc5 z8e z|3@1S-9@MzT|5XIueKd`W0T{!o&)w(-xoRl%b5R7Ggj$nYQ>ZYO=|I(Qn=lYo!M=E zF0toQ+mwH3S^#CI)46q0GoIF?qOm>7ef!W*XP_Fz^V^z#C)^#wT&5d_(09!8zFWiK<$i21{e*fu0loJ6J^2v^d8RxAd*!4n z)qXw_Ts`&&wA1HO-f5%y0omk|{HOizyf2dQiCiaW8AksU@DseZ{zaOyP)h*@KL7#%4gk2hsa7|^j^6GB004Irkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*%4f|A)D%z+`oO8HRnr zD|+RWeQ7>Q2`pNFNr%N5da)%0pZy>(-t~~!L&Ym{TkgQ+J0D->fuw=v(lQ_vn<;Zm zBTVUZmAJz0xjWP0O9NTwh37XoW>+*!S z2VftH8BU*n#6o2zixJZ@p=`#&J6b&jgu~&LIX(-EyxlhtI=Cair*T&2Ph(o5Lw-tj z1Q@zb2+ZpuYCH!*y1dr+R!iz%soiPt0g&BQ+hoio5d}zx> zt41Gx^5g)62q8UKL5l_jJMvt&HJpH!2#}LuKzc31k0Y$t=WJPr|0Ifl#^psHsJ_EU zL|8$SM@~?RDkd*H)`{o3TYC}cm`!+UGqSZ0ejx>Z?c!?Rw~Oy~kGx@@CwBt0mLEDJc^98-WiV8!_7s-sHO2mCP^9 zr|JK?vETj(h!bOijByue{a7x_xgrh1>)+wq6yN#w&2Gv>!_X4$Y*$4MOqMXd3RAQ#yq)()Wo^$iz>x=CS6B-*vFHKGYiC+J+8f)Kv9|mj z`#t{dX0%lBgqYf?r>F;koSZ6F7X52&=)3g<#?xUmWtG?Ie`lfpfddM#8BsEA^dFE0 z2S3I6CZ=(D{OT!m%zJm zYp8R{8fmtJK?PoAkhu2CSuzKj2lnzi(MZiRHtR=rV$qJ1>#$}Xj21db_}6`Z8o6mE z@glZkQ_emny)ny(9QlvP_|N>IhAfp!qBhc-Qc|C9>=hj z4qEf;p!93hMno3^TT;pO0UInk7FGYQk$#|1O928u13v%)01g1Sxv5q+!H(YU1ONbc h6951t00000000000001h0RRA#mIO8iFa-br006b8fdv2n delta 1106 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 delta 1105 zcmV-X1g`s+3(*M}P)h>@KL7#%4giU9a8y=owrnQ^005~Dkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6;{TQrmx6Zy=dAaCSydFw_~`*q`ne}fPi^j zls_?J>CpWI?cPLxYTOOT|AB`p1i)#KKgp-JIRTVkW0jDw`V9!SRgv9GTwl1TdnFJp zt#a%rSkMAtrkY<89z$tyHgus-=tWBKrY&O$r#opr9@){c`_*e$A7^G4`!t2va5RH?U@x zMaOL_qzK8a^#L6OonQk7$=2O$h$-v$ZBr-Z%|^)q}e?c7Hc5f3#!<5Yw0 zVIQhOCy8Nyx}45$89fR;@k#csrSA4Rzz#!#9r9VhUe47d=WZ?QZ+gu^tZr1y1ZJy5 zdz_*|c>K6+2v-lPM$SK)k8yMYid?4{uBGd+dUhPn6}6CQzTBGh)Y(=}vlQEiKlC-#(e~wj zMy}vzd<|s;l5lj6>ByO{98hI7hx>4)qA$!tXp6RG7jX5N#T5cq=4tR766uE1sJtmc_qV{V)CU6LA^a?>(rVmWoS=A7Sv|o zlsG>8ftY)^jiiO$Qyo)U67r)|S47j%&m$LqTM^#!IVcE3YD^a^mz()n=$6|!(k;Jqkn&*TEvX3=Wotc5CpJ!GyAx&Q;96Q#Qce#AFB^Zn+J zYzbDXs)VrBl5rggB{Q?JIS^2Jx?GzjbMR+;AZTa)hqdZZO928u13v%)01g0&ad1>t XY_@DC1ONc34wFd*NCs&H00000!uAP1 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.9-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.5.9-compact.zip index 6633774e8d586300577733146bfdaab6dc09d65a..084d6aac6c7c4c93950f01e83d95dad9de68edb6 100644 GIT binary patch delta 1336 zcmV-81;_f|3APIuP)h>@KL7#%4gk5isaDpql#vVt007$(kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN*%4nWZ^J|XnIO1aCxPP zVTx$G@yq4W=Uq^Lo>ekCZ7~hE$h0Zk5A#tBEbmrrtwJi3RUt+f(CSsU_>c{Moj-EC#pQbmZuocB%%65& z{+a3>{(zMqX)psW9tG6XvvTW3QFw5%m|aoJ(Q+i?YR?5pDGgAc?L_cgdu+YCJ%K!C zm#73zN(d}XYgOx+bl8xinIZ$O0#n7t`J>R0orO)lIWFEURySKp)dyGP(7~9 zE=9dhf>^D;akH}KQRl@<(u&lC`(zRI2!};t+%(uQxYcu_3aM8;3a$ITKZ1b~4e2|RSL5BopT8O-Z%9aK4M$N8u&K%I!Iw2! z2#&S(R=!E#VP)b20!9HlVb-lpw}8o|Jl^7e$}O4BZS|o>DZ`=W*~#(Je*FMd{cjU= z_x)m5S;@}2Xxz)inJ?W+#^B$4w_;H0{e9CAvczUqmi?CiAb>)w{BhT&gif9C(~(6RE2$0pglc5 zsAtUv!4!O#d6Gm0Qwp0cT+W;bf=nv9DrI?lEJ89$2u& zMHKNr@U!STeg@udUb6bHIp@QzmN`@1G2xot+2F^%M&J#gLXD(x0SV~^Zo83xkxxHI z`g5zMGArZqeHdJ<>Z)*~Ot+kY!x>BKwwEXRBl7FZ7@-aG__opIX6~d? zS)9znI@k*gwwY!C1ovo5zybALe?uPSeK1wiNuV`31XHsC*_dvW2M{4#{QA|im4)Na ufBtv!(NIeP0zU&k00ICG0J*sgsaDpql#vVt007$(laT~S22KS40002&)sUP3 delta 1119 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.0-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.0-compact.zip index 64717b63c5fc0b6b342f24ea61aa9fb98d8ed87f..3058dbca6c82ffa7ea0eadd6a6de8ec52514c24b 100644 GIT binary patch delta 1461 zcmV;m1xotT3bG6sP)h>@KL7#%4gkQpsa9SDbI6DV003?lkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+BfUu#);r>zfYg@N_eU zJL_L>MSlnEJM0yIYA7p%vqie3?oiimw)b9jFcm&-IE%KLd6TdZ2nI_lUg*ju{8phS zKo#nfIXqIr)evQOxdUy{vLv;b6t_C1;{g+WtK{Ujw_kcx_ z@eTP5F<-A6Q^ga(%Fo>W4_s3f%UI`WH)&mwolw%UCGc4X@ll^3K<|`+IL>6$)mn>e zxEpr%pEEyOExAvYtBZ!XMRNK`2_)ynek@svp0uq3YUu=ec~^u79MY$xkGG=D+pyYv z6dZL1&=E9$f>i2Y^P|kCMs89OKo=TYZ-0jjaERO6~{tii4`6Lc+)$i#D_Lw%z zS%YafX(3_ll|05fwb_kXY8{ad2K0#I-KHvb?N z|7g0K)V)j!V(V^7e&{U|dHm#-6t~-7L5-I9eAA(SzjdGR#y}E@3hC>L$H`Ei?4vI= zV3s3-=kCAge>1Pm4ee{~xM4?+ooUk}V}$(&-|U0uZCpAE0Ws>JgkZGkfvQYgI4-pJ zuWI1&hhH1pe;0+}!nr#CvenN#12p7&3u)8$B8UQ8B=GuT0m4-tr!uYV?CcJTxV&C6 z_T)N$Hs)eY*t0q2b#vJRr}1kYMmV%#dy?!gu1Zh5OiR^6{!Vm+kFgWwN2y|3i()S5 z-b|_c)OKYJNR)t&BTx^%9%v`zdwVKq5Afv>f8HmpO=gXi;KwYa#6)~1JbwKZ(Wd7X ztf?+Vu1wGO9NhGFxnMo#eY@;_m%|WT1dZW;WOzh$^CTHE-A@Y-a&aSKqVAd5;Fy1C zTg2G6(2)kulOQzf*I_u(yicL&&*3HV1lQEe{X3>KrjfbM;~w?m#B*Az{6XE-V^g_) zN7aRbl~p`oLPnLu!)|7IWwh#cIRPN&gzny+kf)bYm&eNJR~L)Se#3?ejn)l_<@%|A zrlwY&_t%@%5h0yN!S>bd>9FcSqOkYFkeH)Rg#k~uy#?t~HLO@LOg@UCM;mR~r*Tff zpaXcEfk(d?!dq&+MI&0CJ@_p7IcN#ifCD5!H;G4OhsjL43o6+|OS=1(+4M znx@699&$v50iM(-SRQV;Lr#1q{fy~84fAf>1;$#Z!yvTUb8HJ5&)!@N0lkoa2u%m1 z*S`X(ZfgdWi0w{_4;okCsBhDusW(uJCw%IX$$d6NK~W3$CQ}!lK@41nZ{c#-pG7;s zNH%h;;aJ(Fe_T z3yC2XARdGn`E5%B5ro|4#NWq%AH=^8SPus-^kttx1FlDCxuHxkRPr+V1;T^JG|B}K zHh0073#tW9tYf~>XGw)%{D8)=kU*n}pjX8@BA>@8`*U|EqNT@)9<&w#d zwP^YW#qHev@QUz%0`iA@nmF{|Z~uIcD0omy0Rle*KL7#%4gkQpsa9SI1aruU1pokU P7Lx=8NCwIU000009Qn*8 delta 1235 zcmV;^1T6cq4AKf1P)h>@KL7#%4giXAa8yZ3m2;>B003zakr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6Aw3vBona*-kcUUB9uZR$0jest4!)Tc(Aket#g@=Oc9?s z4*a>doE^#ckCm3CTW67wU?=Exo#^ZSH9!?Y$Y`ZqsQ3}qHV&d9VvEoiG-?3L{MhUm z*CkyjYEnugrnTUgwM*1vq)>YSjFxbF>l&}DUNw)TM7fB6-e1ag$STA?Gq@;uu1idH z&h@W7)jowwEg%f7xi_9|kQ7JH57d#OZjHG;2P9feVx<$4+WmV1yxflYi>L{K-pn$SJ0b=1Kr>Hq5d6qQN3ra_oYBi*5m5{=W zJXPg?R&*DC+;{V?q-98&&ZZW9YUsFG56w=WB4=G4LxzILhQ8TX#(PAk1{;OMxS^

jY!xjv?lTc;lF{1R2q@%;?jge@ca2Rnbk$ECj$Jl+EPK zqq7kRZY)9Q@iO2;OMnO%#~FKE525)(3RN3}7(Q8l-?oT<1@eqT`R6?>{y_ODja|Dj z3*NHEa1n$%oi^B2%*j~$Bf-7Je^T@wOk2+dcBH0_)xn+IWfs@XK-VbShdNbIdzwjR z7u||IeDEb<5VO1eY3m`j*uI{s&>8J?)$~i8I3S24gFE!TywWt&&iW-{mlN76zQ!4g zuYUM{OOETU0Ue&Ap#ND(IK>>)(3)sN+IVx4#>8(uq=jp&!gfPAj@0`!Xl`hs9zkTB z3|ph=Rc9U%!tR#$V4T~~JEs*MhcWEN+RXH)es!stUN9Yju(B+`DV>uwP~ zn{BTyz^?A(u}csstG@2Z`|k^8U|1=hovpAd;bP8A(X%s@+x(F5E1LEW{mb;RNUdTBay!BaKDt~^d-zUTFCLnLLWV2h4vRns2JxK$5Vss4*=C291m6rt84 zh9rGifaPenS3*g8c}yh@cZ}rxZ-8ZgqQxokP#b?gIb9WMvnE**DYvbly?Ww+p6)IV za#uq{M&dm%xMgxYoKxuF{Gh2Ei*!~U|6TH2vV11y5iZ+b4x?beeyDov3LZT; z9ylbR1wc|LW!^0hl}@omFmDoaKv}Ect1sMq_b7`?bZ;=8bKnKyOGk`mzPpeo<2L%6 xAh(lc|I#vMeo#vR0zU&k00ICG0E%&NR7pyebEpIW0BI1DI47)006?STZ#Yx diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.0-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.0-legacy.zip index 06cad84a84a1bb67f463a2d667a6a1531f9e93b1..ffdaefeb3abbcd59698e087aa07cb4ce66778f49 100644 GIT binary patch delta 1332 zcmV-41@KL7#%4gkQpsa6&E)?xt#007bx001PDt^_BMLL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#R zn-1ylbTfrJ>tAn0e+TS4>=l1%C@X`rMY^Qa3n zTJY$s(2Ooy7;y{8lSw@?U+_)2Sp?Fxr6r8dBH9+L21fehcs|W0_Qj-Xcx@GHD8%YC z_g=jh0s4d;F+M%h6j*;hu%DM{QkG9(3<%~>g08yn0!SsnuJH8OV)DwG(IJS-)r+Oc zpNtEq<9@JigPpdSK7wckdp;c9M`Yu6L=*e5F6A708%Y&{mQ*lwwtdB^KAM9iULeU@hal6g;`VlGVG|#7>r+x&O6keSO7ektoj87HmQ3scubb9B!bQ3OCJmT!; z?c%UyqQ#R0Z8K5pZWO|pAnqVl@b<3S^4atRjht7TsOP@flYp-+*rmFlwiDE**}v18 zU}@I~F%x4 zL?|2SVm||w8aIvLE0zv$H}`W8TWL5#rSK>3rCqc;#9MzN#=N*N5JUg){n=_H%Fy4< z8BQZ3UP+M~TI+nxVuP{OZoqWaRn2_`51p`HZ0 z@`R^6jZJ^_jDF!2tos@Q4rFH}IeEhjU&~dQlG9a!_b*O-eV-lrIRlT@FIg7aCOETL zp|Nx;HS|YS07x?u+FV}a{oJ8&#KXxuSd^TLm4m9NpLp}*^ot-R?_cJlg%-WaLL4Nl zJ_4u8kUfVF^0`2^hOeucq^0?*0rXFOK*nYhi5Rf-L$FU-Zj`x%DD zSE#1sb9W_8$35vfm9*ZH2*mgMiOZxYX~*)ntOQiiM=k>2R18PTuZo(043$tpG zuBm@qZ?9!Ssh^wC@#>3c60yF-qk3f6mc269-}JXp!&AV4{{t??Qe1ha9S0d>J*j`c zm1U)`MULE$e(m-zX2T{vJ!1B2OG2abhb`kli^BpvP7X~ylbr-e215k^0002mgob4R delta 1138 zcmV-&1daQv3+o9RP)h>@KL7#%4giXAa8x{fv~NKK0089<001PDZUrZiLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|c?Fq3tHP2p*Usr&MXPiwdShX5D;uf$s&XF}fP zR;*Uy(%=2VMb*>3CD3o5-YkDV7E4wcj&2dSq~;zorU&kBC;VjO>QsYM4U8l83u2KR zd=?Y@KVH<#IC$1xkc@igP&b&9cLzoEdKg?AVAdUYq18v&VJv1fOSmOPXJ+w5#b2CX z{ZcxaG@!6n!{D`CSh;Y2Jh4ogTNh7zBShHIUf}P;EOpTIH)k80>TiFlr_)XO++3qY zcD93g$>k0WBR2`%h{1%e10mbcD&PGwHo6_!kNhaKN-NwOL zPls-w=D4^Teu`{+k}xiIHe_l?_709XU~o= zuz3@cL)s4m&TK%$LaH?KuTCS_jTL`-CpAA4F`lE|-eN*y3fFQBy z(b0uV@c)}p8PxKA8L#qe9VXRk0?GOEN=t>6`l_#sICe9Jx1Rh{`P&}3SUpVXU>P4Z^6o*U~#oag&MbA#|a|PPV+g{OhzsY6i$Co zbv^kG3UD+i=W#NYA;}ga4u<+kZlAlb6q6`k11U$0++3+I;uNF#O1jn0FgTe>clQx0 ziB!?TCw*BB9MzlB@P>(FY=XT zjllM*V63L2y?Vd@-p|*fP)h*@KL7#%4gkWrsaC`We&LA)003?lkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+BfYu81Clx9`$Bhun3x zLi~j6r9V`XKGs@)O6GztNLoK;0wDXFiv8>N?8lUCosUEVbWBWuzs3Ig;U#vd(YTsO~s#lA3MT;$i zcFod}LhW)At0u3yh!^a-3}`nVuP8Qib(BR|QB`GHAm=Q9fhUPMs|~{PH(8ROexb|Z zoK^Q4yp)^tzQZ>dmGot&_VUU?3HNY(fiMZ!xIVvau;!9_dMjx)8PaFky%J-PwT(D% z&6A(wCyKB**foBtG$wyrkNfj24JtPaDlteVmTK`sICi}FKhx^4Ch8_ykYgP7k({2w zk<7Grx9FpP;OZFAqJG@9r@8im;s&KA`oF2rmMyhWm`V}76hme<1Mih1P}%>MTNqKT z2p(!<7_}mD1KzbAgMd|zY-~^P10Cg#a{g9(z`6R!W{SbWK+3ThCXRLHp*Vo^OiWZ(P)?waHdLVX(=zohq)(} zSI=GVEGhZMiFKkxzl6L`9{+F*Ju4KGCAoVmlU1rOfv`>eKyaJJ~|c32)5%D zi1%=RT*T0_qPe#%V+%gQrfFfY{4A8PRXSu=5?dvttnQ$Uu^@NA+#RikDkjCEz3?0w zLH!z*i8qX&{k>J^AF#AhEE8kUmHW!xC_D?<+<;35)q&|ZTGtpG&-L(g{CA%p>QX`L{(}sePueSiy1pK#*t7o%32?=>`?{eG#%-G zv=+-JjgaJ9po?{$W|Z_)VS^DTlO)1}eOeV!^p4>H_{5}C>A`ZF)8VfbU z%5Kc#Kj;2AiVN2;R|#@?Vp+GFs@AozMTBYyIfUwoz8gG#5_LNOATR54_=H(ut6IZd z?R-VQ*EvsBKq1qx2sEN6cE2J;taO|{N~q~m|H+bt>s)RlIwpBlfQWEoI&JfRyzw^F z_Z%?xQdkxYiJCYi_|7!8i>@oUfePibv%P}K@9olzF1rJ2(;aTQ2dEyUeTL+Fl(rNd z1`rNeHWynrW*F%Ltll;#B@vtt;UWgTHXO&FbBLjA>?KU74O^}B)l`+Ce}u!^f5t7= z$I#*fHOt_AHg9J4r;kWkljiMzo_VZZF#bq3q`)6KId+ga6Epu@WGg2HkpaXZ76~J` zSX`=={7p%U*|t&PvV8%uF{^riftV$h(zcLtU~qczMQ4{&$|fj12B55M+$Mv|D|~&Q z(_XyXb_JEpYvsH*L1lLIJre?iBX0lY-R0v@O928u13v%)01g1cxv5qP#0Gxhi3I=v QZWfaS1xN delta 1235 zcmV;^1T6cr4AKf1P)h>@KL7#%4giXAa8ynpxjm=^003zakr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj65FecQ?JUw7Rzk*XVC{qaXcq+cU&i(7ych)6!Xk=m zSTWaXM^-dU{+UgG1sTJH06bK4G`;=kewIO-72%64fd_a_crup2pjN;6)ojZS`p|C> zl;JFtp0%r8<7?m6Kmu!M(Dz-jOPx&qXgz@is}YDoI_wyD=!t|lTTGt#x&JJ>hSNTc zX<~*~9^Ct^bukQBngBVlLyAY18s?>klfVA4sj}g%V#6MP$#fZ!rV%aA^HE^=FlQ|4 zC*uw8B0b0R$b$776YWCWkO#q$Z{8uhL=OMy0F_1^BWTkG9Y|=$$VU^={|(DbfAx?A z<^474ERpg&(srFmw18?c`xRq_nHLS(;^;c4*V(_|?q*{w=?V*~v#W~$l={+ggQZ-s z{rU;4eWIp+pt*|Q`3eO8DJSxgUCx(tO+(>QmSBN0#>@y5Xjg9TRH-%1#eq8u2ds|$PB0MK7~AX z+J`NFYY$1p+kA+O=bwZVU>Ko)Ni28s0CK*}w4-SAC0(vAURrK(svZW` z!l*n-Wk>z>t8Tb~3dnC|yG(*>`ijumf~;o)Vi6a!xc8E`+;D)p@oOME8^j(w=R;gr!{X zap(TpENk7K#$HYyM;U_9-jk{e19rPKH&nDw6X-@SyYBmH|0tPP zvxOqY!V`hIys6Gc?rhs%vp~3)2&OvoTLKZK}^yf!7G#_WcWV23)NtRXQs{ xdT^fb|Ne75^-xOz0zU&k00ICG0E%&NR8AndJ*Wf#0BI1DI47)005|ETeAQF diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.1-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.1-legacy.zip index c0caa753bfa337d00b3a39d3e3527da8e5040a7e..2979631c434b58a19871fd22d4ed33f9bfaa3976 100644 GIT binary patch delta 1335 zcmV-71<3mB39btpP)h>@KL7#%4gkWrsa8+Ntv>_>007bx001PDuLLKNLL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#{DkbKKU9)F)>?l`=7KIrT0dqCz7e#v5c{^9ZjUj8NK-t7zBV4+LALy0 z@Zf!C&dzg|d;5cE(fEDE=&*0LWoidlUtDnYlPqA0T0L0DGUO;~`-24`_xGTdpsaOD1MNjKNf(i7)CVcd{=H2|t#E$?!g>n|8MqPh zyqnc|7^W%S8Oyr9nAbE)V_+Mvh3l$2En8FmnMXmn6q@UoYM}2c(rg)(2-p*^13c=k zAd`|VO^Karv*%|ZQeN=V%<+I2XdszDe%rHX+3S!-<9#Eos|vS#TrM#VEOvq~TgzV} z>?0>9;Sk?k{4hY&j(2}eDSfBv6xw(;AemTAw3=#Xvf~XJy)CS|1L_H1323c&1b1D& zBdIqbs@%wWnT>ri#IAx^f&7l#OUmt>&y%?ICn{um1#UL`QK}(xeFqh-(v-tewjyU2 zd8WPZ<=pVqQmM$n%MF;L+wVN7JpM=9?*bIc5d8{(6Xo2{qkDgdQR(YnVaRMrfPBT5 z0gSpv*7eM4@%qsD9)$H2u~BSld&jx#J1dJTXa6A2ZV_7b|;N8A#-JZNHvsK`S>dgKTL&&$Q&`VHw`Y4-8urFMmF`j zOR_~0$9{h%Ff@PuEloKL0LnCN3~58%d*C``H$02h1{M$cC@v-{S()6E zYuusufVQBQu2}$2gg2C??8Zv85-~Kb(Jam}h4RpDYEVzto?2>`H)z z`C7Vxks#u@&oxQav@9jv8A~ppUo_n@&;o~sno<+s%`$H5NeU|}Mxq0er`pN_f|Fig z{$sG9k`E@GrSTgVqf=CW8gLv?AXB_wVAhY>nzZ6)htA$1#%kN;WRyZ18~l1G2EozY z568VNno)m_ygQ+@MPQUI29LwQ3QtExB`YyHKPpk0w3vn?|81 zB}#x$)aZIoxfYOJQRRh~4HikO0#nE|lU2nzv;#YSMsLtjcS$1#CiXst+ z%%N62O0c0c(bt3nm;zNWn3eW$WyA$PSpVcyM!0`F4=`-N&H*6JlO}ICXT&xuHZY_o zSxw}K8L6yiye4(SPWRCM@d;=f+jEJuPx-O}(Om`O%#faF5`+RQi^~|0`(DzKY{>SD zc9KdqL~LqKNWcf=zG*iOHBDpNzr4+MH@Aek(u3d?`4>_NhI?0R)ZOb*QPKqSD)oxT zVVQqtqfw_=u8Pd005vPcas1B delta 1139 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

6CvqBt8EQEorK(M+Jsy zL$jCqneeC+mdNE0D=<(r>Euh4H9O4^EbN9dKhMGndS?!Q(>zoDuERuW-GY%&LOt4y z)sn4DO~#BGD|t9t1f#ja(LPKFDV{jY+6vWYay_g<|9m`^eF5wUC-xs>m5;ecTn`;e z^$Yxdq%UFdN$)GOyi6p`R6gY|izyFFFsTB8D)=9y;NL7f_O}C-moQitOjmiB3lCU4 z_NbO6><99HWK4#$V=9wao%|TWU|@e&K+tKIEaF^+xWgVb2n$xJHNNCa6o%!QZRRBj zCOTV+ipN*^1)@iFr@Sep)4}L&iA@@bW$T`mmYVIJwLus=soWOjc*(kJFQR>wb5brn zD$c0oq6&Q{60%UEIi=3F0eaMXIcfb&`1=5!q+R`gPluhjdk>S9!l_oNl4XbdsD9)P zZH9NzL`HS4X*9_>@(7YqwyNL$Mul%Qj?52T`N9}~@<{VoHL7I!WRoqNr!s7e06>el zrB!daweHV!W6U~H|C}iHNZH^=Qr1W`mO9E(rwJDoF7er{iqbgDxj%y zAKQ-EMtQ7j;;Haqo)EDzg1u)PhZoQ>?w{~~cmpUBuKLP}$9K60*u!sGAN*#0id5ou z!~5lzGcFHE{s2X%+|Qgm)kDI2H_%eMWKC;WS2bkuWw~vW@ws83Je7EGAs=$1(itQ{r24@ZxTz7cWE{l(B=D;JqD#a*d$o= z7QB!#7m&0W$X-Trip(l#jdVW43ibMFo##d1*pN6ydctgdRaxPsK2i|)gBg&2M#3=d z&YiZ>O0oCQ=0svE~iK)7sT>s^olDvgcy8KXn#-tN0xREa3=jnn^^xaj9lO928u13v%) h01g1jxv5r(7OLC+1ONc`6952{ngm7$Km`B*006?TdfWg2 delta 1126 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.12-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.12-compact.zip index 4e58e91d0bbabb815bc13db3f9fe9a64379295fe..c5e01d83f65afed138f1806a6f5d319f0ce409a9 100644 GIT binary patch delta 1468 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.12-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.12-legacy.zip index bc5b6657f0ca6c222f4146472b672812b5414238..ff0c742c1e9d7cacc43c0246da46e5f51244e101 100644 GIT binary patch delta 1323 zcmV+`1=RZI38)JgP)h>@KL7#%4gkuzsaBjFg2Vm<008zAkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+BfWs7x5P$eSSR=GZNB zf2bahfETTD4ky%qiw*IJr#?OX<|}Za5{i@YD~Th%Fpu{E>8LLx+uL zR;u0sFP10agey4=f5A^Kzw8HE!X0@;7iN}p(+&7I_Tsq zYBw*RY-}l79PjGmjz!{2gIkLi9FazGp3IoNnj09G z1oDL_$dYn{2yb{lo2--hFmTA|MsW0qsw&eDg&tI4x0%0fBF0)x;LG$DS(@NmZj?}8 z(Q5hm!A-`0Q$sut!$!kG;sMl*U8 z4mvF%>pNRyl@KMaXzF@b_HB#ei#R+(pRb{LgI;GY&Y4LqvMZcsfD1X7M&F?{^8lm0 zh!B|61h0nctVC9PNw$W$DvIk|8R_$vs%tEN0VUQUUWo3+eDerbv)0v0Q2QJL=5~6Y z2l&byE5e|MZ%TuM5wgkn$in|3+j5I8ouM!DluR0SA%V-79BwW8rZCat^ z5PMUs^0*o!mH45M1-3~F`*(AYg4oYB8X0F+^{@f+iDZW|nVa6colk$W*mGMq(I2gU z4zSLqKiB!M86qOpH_GuM&WA#Lx0ZlqyQ#M>++9@;lSCUigDY3bQsK5#HhHlC3zYnd zNYtc5Bfp#NyN(DIepBN z$*Dkex}`WBz?Jjm5kuoWlQr>+iSg2ZH>Z$bpHmsVR)*+$c5hnxv{Z;LZf@7Wpf?B5 zN7f#jK<2#b$^M+xt-RpIsz}Psk!(8uvl5kge^d{3B8A|jr~C4B%ZBvcP~Uksj=|CI7tZnQ4n+_Mj4&Ktt>Eqln9Z( z$4yf+x=G3iGV|pTkp%j=P!+Mgy%FF@W`u_Wqc$r6Y_Q??tA~RjrgcgO928u13v%) h01g1kxv5s19fHID1ONc`6952{n*>G%Km`B*008aqfWiO( delta 1127 zcmV-t1ep7%3+D+KP)h>@KL7#%4giaBa8zB5sgXSd008d}kr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6NZ*MoKP!$``R;nLkQRoLTNlH{32mum{C0 zQyWO~CK9e6pylMR=!&@iPerQ9`1d<*$w1bC6XQo!V6Gs8;*fLh=Qn;FSqvtvk^YGY zPDibKC2_yTC}JY@=_l2R(eamlg1{0p63gXGaiw4*&EMdExDaNAP@osAi| zxE>Lr64uSBFoy|O%#N6m&q?8$<>Lhp>R5SYPCbK#0s!ekgs5(~dTZS#l~nqEIy8$h zWhE)*<=v5j9MFV}@p0g>EM8|jAUlGm(>|f$tF4yr>9H3vng5BV!cc)G{ zaPTr@GMv?arP;mo>MT9e9p%8cKN%-qq=KyRa6<`uulIuex{Z;4vK=t~vi-p~764?@`47!4pY6FqtDIIQ z59lhgev%-fa|k3jN?X*_W|l&9p89g=Vl@ZKBh)jn4tfas_-HBmb}RA;F&01S&lT)} z?3(R@d+@uiz+&z``pTNWUQx05Ynr^4?(3pnJ{8Y+CCm1?(Za1gE8uZN4NUdk7Oy&g zdk>u&l?V2#T^mOnRINif(aPT#)c=O31*7xe`B*OjPuDai9^9^cRC2fP+NrgAsxTegheWC diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.2-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.2-compact.zip index ff8267acb0e6997d0ea8be70d8adcb49e758a7a2..875585deafc012ab5e00e872d0ae8f6b5efd5a84 100644 GIT binary patch delta 1477 zcmV;$1v>iL3cCy&P)h>@KL7#%4gkWrsa66{E4`5g006ue001PD9R(+mLL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#L#yEa?sD@qHlr$X!z6soG{KMY^?Y(cZ#Fi8Kv*22n_ zA4e0Q1ITP8{ZF$I-;|VA>1Y8}ZtJRW=fVXGp=P>c5h^Pxap0w<*3o2||(0r)` z1Vs8hP~6LoICDPkhsCjH!s)P=x-_*SGN(>9O{i=^X)j9O2BxG@jX4F6Og#a_{skOpe}5b}UA(~eqbhxHbjQd>ciQ8z*}nXdJ@7TN zSkQeRnlXHD4j6ORdV35&C;dhqr&G)Hu+EOV{=&3Th!ytfzqWn>YN$Dg|LPS41;b7SG$&nb zAnj<1xm0@dxzm3?V4A~c3oo9Gj`{noaX5E_Z+f+O7cfK90OM1{G>DBh(#T#?jf($A zpLJuS!d@srW0ldA-P(WyZD+xQ4-2NyB%|VypN-KU(i0$ZD` zeYZ5Fv0M^|dDXDOfMyi%cVegE$h_~$82daZ)}NHyU;x%Bg8ZHj-u(j0q-*w+W^ieB zMG)Qq^X=w1*eS`T4(Yz0e~I^$Fb{By>DS}Ry@)|so~cm&bxr_8>;lNm&N4m2Z3jktE2<0|jNGO%|pwHVw`}y?|eRY+nIh zB5#OS?N^Gflxd6xk<9w(O5&=&<%E?k5LL?4Vt_}8kIjVZ@i~oM$}j?VhUw9xB6#Pa<4Ml}qSGCc}04&0v34!dTG`(w-@@jT8mBuV-CHNREg>But3% zL7l&G4bgrmDQK3f&jG0_M3;|nqD2vyT)TM_<7f+2`nnjpdUbEoHWZB1G`fqAH1^8x zVyHV)fG{NgHDX=&Ck9mjv6D0-PGFwCB_Z__WjqizEwvh|U>E*~2C`5~0Rle*KL8Q} f01g1cxv5qHPb@KL7#%4giXAa8#2`@PM!c005m3001PD{skwILL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|c?FyU1_;@T>oA805S6c2iiQqF8K8OfCvzZq(E zhmmL~Z@A+ZBk#}}j&jF{_f~&0EvdQ1tX}AAYQiS5&XacKZh<~U&WrIc%E2JVC6gl& z_HaoYy?nkZe>i3RgbW#2Ma)~|w`e6KyDFK-P`n&x8`AtKD`?rFUTad)`<;nCSF~ON z18@A-y>?8|V@nbrFs+3A$>*PGtD7NUF6sBd!ge{(~QM8Gy!Ynf9Ct#UnmUsMgK4PSNgI!}NTbxP|VQZxbdRDMG-3savQkbMW zdThf4m!+JcOKDA>SJUs^SEBDyW)><|hs5YyK^2w=jKMGlvWW`))Wk2iULdQWJ!6Ls zkvW$9V4UpNU2p60RN;SkjfPA=5JTM}yqkHKHy5bw&;rs@rFgH$8qCeex)#H2e>kTa z{z%!zC{$&9(3BCDhUb>iQzchaB(o!^lbg$jNAo|SH9S-z6PvD#i`)=GI^hs9?M!Q} z6}!AQ#kox(kA!3#Mfy4?hYj`Y=OR~y0+Zwjq?lxsA}RxDr8s}t z>9sSbvk46<|Al`yxWA;$?AIk@9CT@EAw>l%QiH3bU?)#enS7kKeZ%-h*Kfi`Ge)0F zF{-xC7aBK;F*;GJs{G^jJdruBPDx^e!vO(I@Ca`&j_R6Vx8z&q~IiC{mkxkm1|!~SuqaJdrU=^XATYcP_tDI3^yIZKIVYS(uj zN^d@$I3G~c^J|$zSNAGaoBhpSEB@bDwx^dO+ORlqkjfVrVq=c#CjDI`2gf)png)lz zX`UkeJL!MJTUPs?&L`X$9rXqqAB1!a44rzd!Bfp-8Ea~(hc+p_Mf5vX@g<5E5HOTH zF*d#Jh632^k1iczKv#50 zq`CB=q8|PQQjbB|NZ_=3Tp*Xo1}mIfdMgR@lOlg7dCDOs=#)$TH-^@e^64zC8-de_ z3hUn}D3|TJe$vFv@KL7#%4gkWrsa8=7xd;jc001Bqkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+BfcgGw0N5|43K|L(L) zJeU1jjfYHaU~%7n8M`)H=qpMKxbqFGO6G`4Sfuos4*EavjwNVR(9{i}?;_wGoX6*p zp|yOQ3TuoOIZ!r&a$8r4+|v#hCb{EqtKw-4`&J`r_<(|K5CYPMi|?D>I{mNA1jMXR zIyzF^Qo?@33_;QFq>Du3E5z6w#4rwl7B_Ph4`-EnwSahk-FVKb$Xy@DJC-Lt$WT~$ zZFcnIN0FXRkwS#%Bn`vICK6~GB8qZGUg|;=N^(G`!D2YV4!JGVCzk2WWib-Ksk{Qd zNxLE3qnC9-2pz-IYij&?n`F)pByAca8}t!7I8F>l93?0+sV89hO0D0hBT{w4h_{UH zPOn6_vH^VVc@Gn0IB9G{C7A z*o=K#0G=p5Qy3U|czgW}C3pI>Jq;_(gluXXDhB6&_PL|=vW|~-HJ2Zxr3KU*i5T9@ zb8vFV^O3yqM_#j$LK63~OP^=Z~v0+P; zFGCf7aL6sCk4pO{8=UnS*zy^a z-~Cm*IbpD<4of1BASGGSC1*7RVJ-|=pP#C954dKO4lCFBmZjxLaEJ91N|!it zK~|1@qoyYE@esRigIs=H2G-!~br;vX*`S1feEyK$mCInPj3IrT^^`$n{X;h%6`|lJ z1-?bt8%Bn!=6(*oh(cM{Nx#mzd1y|6ZZL(>-?7`EM6C0|h*2Qlpd^szT*G)H+J;&PdYz4kPH6et_=Q!7eONLC0H@jAmcBz_yd>dF&6vtLx6b~4k_%`~gX%g;1SsMqI4FJD!Lo}v|F>fR0nPYw{+9GI=MHdmiQ9&69jk2(L> seJMszO928u13v%)01g1cxv5qPQ46^U3IzZFAQY3O1V{!<1poj50Qney{Qv*} delta 1139 zcmV-(1dRK%3-bvWP)h>@KL7#%4giXAa8ws+_!mh8000>ekr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6uFbpC4!_7ZeYAj#AESF&W8~7Qa++T|Mpe|6V_r z8z|=%VYxXQq7jaNU|oB6f#J1sV*r1Bx?2|T^Epu+QbZ;pe8$UmRl6YRKSO)du!8JbpwPh*$hs-m@$H>) z69tHFsNUmO32MrajI zO9!;uANowvl|78d6$haX?{94d3m;ZbIapREp0hb~pnG|b{0Fy+mN|7#XCTjB3k=(a2JUslnJdh&-+tZ@k5kK)}pfQy;zHJu>1t^6ktt1*mGS% zWM5K1yA0ky$lgbgmr4*|5Jh)r429DcPN)!&*8qfIG>9YbWpEBS+5GjfFo=MC0;?qT z`!{WWJm&_RP+T0)Q_<009R3Cr`m3_IN39PNFWap9uY%ifH~G@|=+MpWRNY8dt~!*Q zR*hwYxM&8?enhb|0Mh4qEI_#o)rgvZ=P&tV^_ebeOmu0jE#Tx5RE` zPdVgitwNY27o7%{HE?-K-pf2DcODiu#kiHmBX=C>rViEu;83I&VBv1o+S{VdnPQx$ z&>M0b)w`1Xnc41l8K#15jm@KL7#%4gkZssaER9@ob+3007Dskr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+BfgPHy-G4YhGr|L(L) zJeU1jjfYHaU~%7n8M`)H=qpMKuBSrm5frMb=RXWz_H043-7rZ1z}CXbl^;hFpaaNk zCH+scNVo4c6ykxzw2oCDA3zEKU92_i9HN&y ztwAzjWwveW=E+!89_leZv5sjQwe?A0reI&^72tR9Db4DC!1OyhVp)7FQJx9+jyeS- zKeY#*O_w0Bq@JRm?@8O!4RD~&$lP3h3`a5uV79@ToYQFyY#D2jzzt%zG0WUa}esspuFh2fKTFd46rXz zCJ}%}OZYQ?tQ49>59kU1tqKj%{x^mcLku+Q2D|NE=I_mE>+@zS?nlThczHGSpe5fa>=u{fn0UnS+RT~xU+iSgyr_M?CBFfs@y^imek~qK#y*#R;j)` z6Vot%9q#~@ws>Lw&x~DSu<1sFNe725C37->_V-IjSjVn2;#YsS1OsEZM1+bxuoULy ziY$UXWH(FH_rE1KcNu?dEHpJBmmqQ7&7L>ScTc8WGoqd>Z{-4(6m&+aTqGW7BTOaB zv!kJM+{mPdA_a*GF8U_Slz2_MG)n%%5H*QBAQebyVWcelHd6HS6#`zg7tM|cB0afBo#*+ z59?ZJCawZIA!Kgn3q&iTt}8gCICTVhOcbloh5S6$MZD=9--;=u-xt)nOSXoSGNP1& zDN%!U&jn(WtrYC1kW{QS8wp@67QNW}1!Wu$<&-#*MemKz20P;%?|jjW$z=O~0J_d1 z<|Y$A-EGDxbjqB@6Z?BKg;xCz1N3>~SK%P|PdHhp$qB<|tDk6IHO7GT))Pj!-Wlm3 z1+Fq|6=5*2JMb;f5xlpD4S{YrwEgM7T9>lzeSzGj6S9VF9tZ7uL@+9Y3CpqJ0_|@$ z?e4t*ovjf+f1WNl&srmK^^rTRazAu~`>9y*7$7hEGbIWFtB3(5 z{+-`>JrU<9lmtm8t-6w5l!}W{3tqxpb#zW{Um~GU({OGL&LzE4QiXADn7vt}iKhg9 z5;>xm6qoI`Qty*bkYu}wTy#B&M`Kt%E8W{MQKF^V`f(C@KL7#%4giXAa8#{He0RJA0065H001PD3{1)1)aPUjIE*u~%Fy(#seI|c?F$WF(;@T>oA805S6c2iiQqF8K8OfCvzZq(E zhmmL~Z@A+ZBk#}}j&jF{_f~&0EvdQ1tX}AAYQiS5&XacKZh<~U&WrIc%E2JVC6gl& z_HaoYy?nkZe>i3RgbW#2Ma)~|w`e6KyDFK-P`n&x8`AtKD`?rFUTad)`<;nCSF~ON z18@A-y>?8|V@nbrFs+3A$>*PGtD7NUF6sBd!ge{(~QM8Gy!Ynf9Ct#UnmUsMgK4PSNYn75cD<$>)!X@~H4?)Qm9&)lSo*WR( ze-(8DN0z%lXx~)x4 zHw<3U;(4ffKx0XGk1j=Q+54i%j;P#NC;JfG5^OWQV;yu$+MLAx_Ed@g=Sa6^^MbIfC`pNIz`Ef2~&!-pzx> zY(X$&+b&bkBtg3u?9rfnCyoR2tYt2evMzRaYtG5XaZ?Sa@w`UZ0a#TRT&ZHS+iqv+ zR}zBsozl@ZKAC%s(*Dzfled>#|KdxikGnVY5qp0T0@))t{G8U5e0ilYIeKF@F)S;p z!Zha+mMQ{JEZ!G|!#bj~9KBmrWp;GzCz<#_wN;Rs)i&j=_FbC134a%0QGK}QF){w`q>sEjsgPojpuQf#)rk{5MPm0eE?sX z@AEsg1r|CYc1xN<|1ONa402l0EKmY&$ diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.3-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.3-legacy.zip index 63c058f5f55888ea756a91b3cfddc88f9f0a3657..fde27adef0e14aea47a60650acac386b68c56cf3 100644 GIT binary patch delta 1346 zcmV-I1-<%!3cw2(P)h>@KL7#%4gkZssaDeW=%5w_001r&kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+BfgPHy-G4YhGr|L(L) zJeU1jjfYHaU~%7n8M`)H=qpMKxbqFGO6G`4Sfuos4*EavjwNVR(9{i}?;_wGoX6*p zp|yOQ3TuoOIZ!r&a$8r4+|v#hCb{EqtKw-4`&J`r_<(|K5CYPMi|?D>I{mNA1jMXR zIyzF^Qo?@33_;QFq>Du3E5z6w#4rwl7B_Ph4`-EnwSahk-FVKb$Xy@DJC-Lt$WT~$ zZFcnIN0FXRkwS#%Bn`vICK6~GB8p=HksV=2->;&AJ%~otle7B|WhjC1e<9Q5$j=oV zzP!Zgbf75{x=i0Fh1&(~vVCzj+SD%JbN8hEa+VI&OsWy=p)407J@`M2+ct~$B zu3i|Qq)=FY>X4YV)>9r1=IU}*xnMU!qcGEV5fGgFD65b8bnLWQ5y^k>u6}@sQlSLHFZU3 z8G?=y>g2^6540qCczgW}C3pI>Jq;_(gluXXDhB6&_PL|=vW|~-HJ2Zxr3KU*i5T9@ zb8vFV^O3yqM_#j$LK63~OP^=}k zEA8A9?mN>GL0w7%tHPPiU^7H+jlQF$IZ1|1?fa#j2OkMlnlv*sE1eAwF^Q=iL^3J= z4Ozh4&-TQB$-Afv5D}9{QD<?n-+am(s`h=|RUP!GX%aVr@-!w}HDUN)8Kv=eIfi;TUfe=nanmu^z~n{&}M76gyRn z7p|ZX9XONamOyKQ>hOr2&KE}ZoeQUN{NVez2N`*{Rhcd8b!Xgl(l^MhGW>~4{V3Ex zD%_=@d~gasubcn)G+0@KL7#%4giXAa8$y$Jh4^;001Wskr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6jxpC4!_7ZeYAj#AESF&W8~7Qa++T|Mpe|6V_r z8z|=%VYxXQq7jaNU|oB6f#J1sV*r1Bx?2|T^Epu+QbZ;pe8$UmRl6YRKSO)du!8JbpwPh*$hs-m@$H>) z69tHFs@> z={iLkf|NLalIcvYs&Q$E|Jo=3+@G2wQ{n0Li6c(rrXdb`gqhtL{d4N(f00LXNjO-v z?6<+#ZdAHdbZ^$eeAbgT+Wr=0*<)qm0!Hj|shL;X^X8~v`2uQUv|}7>a(fiUrsl=j zMqi-RKKXhs{$#$DX0*FK@RKKsZX)B+Cz=B*!Vyn@nFr`|;#K6cz)OJuOJ)FZ1>?Iz z6lQBO$AD$!IH~+%o0+kr+>H7`vD|`oYOR4q^5IpJh;P6pS@OJ^>+4F#Jn^QlrETLpJ$DeNqoWn(dkUlh$W+V51L(NJBZH&C}J zu4B@F!Hm#44!EQ>#3l(jg8o9P+Vv@2iK3d9VgXz~0xa;H7$z&*o7nZBk9Ydd@A_J^ zj%#sIcKnZw*t)*2uN*X6EyJ?f%#4#zT!#FOmRxr>v=PK$EW_TG3cD%S*1WEYOPF;O zeWUCQu7WE7vhHw}P9FO(&0%G!z>_K^UBeK6j$zgHc4Fx-&m-pwo2#3&8WX$N5iOz7 z$n)p;C=6BnjeHtG4rNl*zq;2^+I~;$o&YG{XOvt-f-XJ+)Q$BNpr!QN@l0WsnPBWk zdyaiEYSNMzvj|QkFBq|+55h=|ewhje*^++NQ$7}}t2wHr_&sE;Fd~t$g^h_A;oO{m zl0yB4;CIu*n#S}gnO`Do)O1M%3rH3V02Cr=J-vygW=+b-8Rw#2vQr|DrA#V#L6uK! z&Pr2VEG8gRg zK`pNr1h5Loh$=hOyD?Em@mRRV!9Qs6lmG7%po>sT0Rle*KL7#%4giXAa8$y$Jh4^; S001WslX3+}2ABi@0001%G%=$9 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.4-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.4-compact.zip index 144830f762e721fb5bf5c27cabe573fe2d7c6df3..e09dc04f2313d94b343105d026d614d828d9068e 100644 GIT binary patch delta 1486 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.4-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.4-legacy.zip index a31bb7e9ab821c688504c535f1c6e1112b673890..c1763bd599607558d64acf4add3be5f3e15102cc 100644 GIT binary patch delta 1347 zcmV-J1-$xz3c(8)P)h>@KL7#%4gkZssa9{1l^_=d001r&kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+Bfk8sPb=z+`oO8HRnr zD|+RWeQ7>Q2`pNFNr%N5da)%0pZy>(-t~~!L&Ym{TkgQ+J0D->fuw=v(lQ_vn<;Zm zBTVUZmAS&mMJT76VW68jW6AFk8A|zwP za!w~7qy}pOiUuIl$SId@YqKc*CZk*#2{(~bgFS=z5b1jFjK)R&NFnK(2n+cv=TCi{zLjLm+QM-%?Z?T#uuw0c=0`7~sYWPeIY7TV> zafq;=5Nqpyi~x|JiX?wW0u4HE?vhTb1VwAhS$7}dF<$|cns*-0gOczg~YRX~vf1J&}orU|tnHr5=!q$Eb zn8TkM_*zP4(@$hWtkdiXVP!HDUQx1wZ8;L{9zbr?5YhMYdBQhhTA|FtY1PmmtWEHyvbB|mw zlk-4%UQfu*yHNags@An{J6e3a;m&2khqG+DWg<1XDPF7kpl~jXw+SL`?olBxc7`L* z3UBmLG+$ar1i0{A9eswZFs((ja)!vgGkjNnzD}?nZ@Zw2$uziP3{-+S^~uAy_d?Fm zfwu5QsETqS9(`D0t|0?u_J{-Uy1*y{g}fOTX}2#Kv2upCfMgb^r-fpK+Oh-FkilIp zS=1gc465*^ZT56&k3Z71${NwKs=&yFGt5N@$oZgw$eFtkG%Z~+j9>^PT`SG+q`D`6 zjqIj_Q33um*V(MjsOpyyac&RI=15MdLAu#<&P`@O87)$9j)p!AQnZF>ciOQ6!~6nz zZVQNeupni=4vgLxvW{h!=g){d4}}(S@g4A6$TfOlbp0-T@9hia=UnW~Q%Xv9z0H3+ zo_CWYJ|G>;pJ5rvMl^>wF(lEZe}vP2XMw9i{ohLtA#fWDkuppl0l2M6rjA~^=c^2l z`4~#{1ul~ZB+h)2$)D0G-uLMF#7SAzQ;u!|Da`&mX|1b~n|Bw29TO^-GZpWsr8+Qr zA684v2EhdIKNlEe5bt%xHQ~|J*laHCdiaXKmo)^o8!diuGRYrFJ|Yx|S_d_Mh^O)V zCE3**d;dkqOaG}l1bQ=7XCpRg{jbGcT+>GlUb{W@r-c4`^a6El`E|?%x6pjcmvHn| znGd<*VPPc{uogAx__7^*C1iYnuRH~I1Z?jA%SP)h+90zU&k00ICG0K>VdR&SA&AQuGy04@}hvIIy5Sp@(9 F007TIbtM1* delta 1152 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 S0065Hlllcn2LA*A0002**l$Jv diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.5-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.5-legacy.zip index 9f9e259d862b16ef260a475738db0cf0798bae8d..f5a82eb25ee37a7c4c6cf35e7983bc9c7a1fa778 100644 GIT binary patch delta 1346 zcmV-I1-<%!3cw2(P)h>@KL7#%4gkfusa8jKFJcx2001r&kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+Bfn=ji#Wz+`oO8HRnr zD|+RWeQ7>Q2`pNFNr%N5da)%0pZy>(-t~~!L&Ym{TkgQ+J0D->fuw=v(lQ_vn<;Zm zBTVUZmAS&mMJT76VW68jW6AFk8A|zwP za!w~7qy}pOiUuIl$SId@YqKc*CZk*#2{(~bgFS=z5b1jFjK)R&NFnK(2n+cv=TCi{zLjLm+QM-%?Z?T#uuw0c=0`7~sYWPeIY7TV> zafq;=5Nqpyi~x|JiX?wW0u4HE?vhTb1VwAhS$7}dF<$|cM3(iEdS-&u;nOvPs@GK)B2K|45VC(C65J5JP=pNJa5{i6~{W zaDDH);IE7$BBR6OUu>j>$AWYlEB`0}cr)^_p0b92?AHUQkzuC`(Y%_Fwo6o#+aWU7 z6q&-ix6Q3la~i?K;D#b~<}wqTu-fTyov~-3L;KNCjJp|I-IcmD#95)Hcq2mt>CW%o zLKU_&l59i26CNsXr%Sk=`ytUY4ifu?+LRcYpxvh+ZaeTCp8kmKhW!dzF3ZX)N#;S@ zQ|Qfqu6mpCAVVJxA7y=Cw>*?MgJ_<&3)zDE08GZ2T$X!)U$VZ+a_RHu>dOSgF=ZIi z14WY>cj^n3AQu|~!uN^k8aOVUMxT^@pep-B)~pF*xb1B52)i;3wk)4QKX_8|t>D6c z0sBv$13aJ(c& ze#0zUV6>5bXa$ni8nm-F1qp8C@xXj(eU)pTcumA$25}cCe_!JuRrEE|*)W?%_|hYP zy7ylu(awc0S~9%Zxz_lYEFlpQ={l+`gju;b2zUP8A36SId%_)~-8yYj|3YJoGP0oN z?Lkz7hynQar;Ps*aI=cht#~PQ1p-D=LN>QQG)9*FHN9EYn2daPI; z?}6(?Cuva(VAqHKUCl$Cm%)Pnqba+8Esvf|_6x5gVkM|Ha~~!n@kh&3E5?5Q^uK1X zYh5g;<(;#-I=(W9K^(WMMjV)xh$A~NU3V)UoHnX8Jmr=ZD~I{i;3D~d2c`s|-GZrf zg@xk_9=zKv>abFGYMrneH>KMt_`D`cxIx-a@W{c+tT^JPBSEAHx}xoh$=>gOX@KL7#%4giXAa8%MfLitt%001Wskr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6J4{`0GWA{67ZAu zNMBy`^-aV+C@ozkIpI&aW1bM4VrspY_g-8^?IqVV52K5(HVk7oNInE5mv@^JWTWnJIvh zw&Cyz){UQ$;wI--dl!scc2kl)DAwOwrR|gDkahZq>hwC$E);la1n)jDtv4$82|#j@ zb`a6DC^DUYT;ky@l;*NkVFL|WJLl>3>IbN{h1Zl-Z2cGRg*f9=Hk8e5WywEZJp@dc zMTMF3pW!w-iet{AvG3mGohXU+r7XcU|i#qS~LSza&remH2zkS8VJ** z_NBz(fG}56*9?Fo<2NlS z3A7LJX0B?s%%IB0bK)CNkVTCTyDX+?YTr2)-eGf}`D~=vZ|qHvE(Y#{A1X8(~%@=-FKc750x#e=vmwmc%oN%|n1m zKdodA`n(t<38tV8LfT!qok7w2b}nVGY2Q0OL!5FzUZxB_JUOtu%o|hQt9XkSlSz+% zN(1GM(%y3l1rw~=%v|;u!kI6Smv65bRa}x%6OmknvLo#yPUJoSuoGfYinY=Q^2_w> z7I55GmleCJWLRnS zT#?B$JnT7kMy9_ijqy=f1YuDi-1R6_fI^`!hwJ>A<$O>}0Rle*KL7#%4giXAa8%MfLitt% S001WslX3+}2ABi@0002!kR>Ys diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.6-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.6-compact.zip index 0a1a6be2c92d65b60dcfa29a0efb53bd6ac2bbc3..fbb76045d97a7a7221a72c61377fc6e36b271c67 100644 GIT binary patch delta 1483 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 delta 1255 zcmV@KL7#%4giXAa8&$PS%SO-0065Hkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6@h~Pd5H@SXYN*;f7U3#xd824 z@_V2*MvvSp!~K-^Gu)wmj;AFP4$wMOkMFb501VVBVDt!|_ze*%TnuLgxaJ{^N8vS0 zHM##w=j;e)ZAs*;tfdy|&JYRfs@IntpZnHPa`EmSX#k^thGXsfU@bbOoYu@H9vwa7 zaa5@;t1|ns+l8xhy=7YefN}Lj2`TONN4gp3-97u2K1mA_^Z;QP#64eRJN{^p0`NjT zZ1DqOd@wSDe~qxBZM;5DA(z3_x-%Zbu9X2OX=Vxm#tD-?qOcfEfYK}yrkRPmYM#X= z$7u(DlYo$a94M*r9EK)X&>Hp$TH8Qm-oA4iJ=L3HVPV@K!G@bR)a(AVc_sUFPa}2^V6NN2d(cV18J=rj7wOLvB}Yz zIbC*tFm1AtD^226Q;L}ylC9(2`fQHUr@FRy7ZNq_+O{oeKvC$s15YX1)4s&q3DEvc z93YkDYZPy@u4xu+BpT=-XN_ZViLKwPP}>|0Y$*$%PO{X!kAzkW7g22@YJg2*CC&$I zf7+syL70azaiTx*?ICRSEf=%muR)&oWOTWILS!H62d)N)Tks)lL??pJ4T}|qXQJUR zgTP<_cX(awjnp+%)GE)~`1(4$5>O@iOLbSVNKQ7bWv>m7FTe0{nXhTEXD6OU?O^|# z%S}3+c`@q3zD=f7@>yKCFqFfL`R4b3rj`k(31d7%C~a^Va2{0KR-F%TB;qP5FJ+B? z;!T_-=-5ChbX@8<@A0Z4#Z<&-M0a z)L9J3zzNOsB?Mm|SaRKXPsTIqtsD2~2=XPe)_Yo@I3WM;g;Vh+x-NW7@8F$u}mknlMH z{1n$?L9X(}3rW5vDhunr5X2L)l&Zw5Vk)cocN4S`n5mf!tKin{GQPE_N~?Rtv|*c( zNT^V%HU+lEGa4#I(1~b$v3=!t1cXQc+j4aV)&#|=X(Jy^qV8Lr=lv}YQ3Q8861^-C z-;9CJ>+ld7ef(4NkrVRgZN}Z8XXAt@|K=8I&QMDM0zU&k00ICG0E%&NRQy+2g1iI( R0ILv__ytG?{saI3005WmVC(<@ diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.7-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.7-legacy.zip index 54da87cbe340d8069b3e301ed0561b3fbab54f93..5a25ff028e04f496cb9b5075a7d727ca0a7b3fe1 100644 GIT binary patch delta 1344 zcmV-G1;6_L3BC&$P)h>@KL7#%4gklwsaBdeyV?{5001r&kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+Bfv_2&vnt2(8_qA$l% z5Hj8*UhWGv*LY!nh*BCuYmc0Zsep%O9#L9Oq31M0`s!w25l0#K6YONu%!^JYiMP9* zZNYN#73lGnb@a8_(l1~I%zvtQl}DF860)LwqQqqU!e;Q8K5GWKPL+H6_uymOO^%Fx zg>i4&xn~&mu&BuU$s0#CVWQpWfaSA2g zX}p0FZZdwuA!;~(KKGe9Z7`+~Sh|~xAFbk^%~DW;h%H`TH*WafQFybDV-G9I(p*R1 z&g_}S2GdGsw!*EEB3VA0mrF-UFI(cft13B-;ooUxj;IAy_;sE19A=IJMn2iHsaXe1?5_4NgzYx&T2{h6x7Uwc zt&}Hb>FJBS9dnZ9(5^wqsGPx(Fvf9~T9m)OWCwX$a9ao3KDMqW|vb zp;|_Nuk%^6xoM3HZHGM>=dJJiN$}~=WNN=Gvu(S{R8Ei9uo_SjgPf8ALy>J$iU$?P}gk+>$dH4Kc z=?{!5KNw;*01VmFavfWn3ztMh7)Axd>BqX7sk_0n1r4m{nv!O@B~^6}dz>CjL; zoJ&E3_t97MVDq-GckLD#2WWfs+`BKTl9G3|IDet7( z%>ckluTDC23N_)@TKlXt*mKUh`@?a63*MyJ!RL`-N|Mu@LUW^kkGQRtzY~`h_kcSP zzdt*TTP;TYkkJW8Nmwkql}MH7#WM?wG5UvaMpB?(7m}E@;{{E`oX92u%(C~ZtCdB& z?48xdrFqzHj9y|1pDOR8G@J=)&pHqPj{*VRxj#!pdw5=>7}k6g~F?UhSt?+ z?~$?|7IYuDQRG(j4mt}z^gyA~dkKW|7V5O2R3vx|Ffs(}Ozf7IX*#cOq_d9)<*@GL zl~@0KsMq>*1@XQ_wbz0n{na0q`aAsMh7UQzex}5YHDN@z56=Ii*Vw++=FP^}MO;|n zrlo%ea4le;|LNUSbWlqH0zU&3KL7#%4gklwsaBdeyV?{5001r&ld%Ly237?C00029 CiI+(L delta 1158 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 Za8w*4Fdx1I006uYk_Jcy00jU5008yPPmcfq diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.8-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.8-legacy.zip index db94cfdcfe033415fa87a4251891c684e893e9c9..53dc9b4299cbc56ca64b2856d0daa80befea23ef 100644 GIT binary patch delta 1351 zcmV-N1-SZx3dIW;P)h>@KL7#%4gklwsa8}FQ#cz1002J}kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+Bfzw=FP+XnIO1aCxPP zVTx$G@yq4W=Uq^Lo>ekCZ7~hE(yvPuQ4_#9<^JY+ac=w{mP4PV?WM7bx1F0RysE5O zAfXBj%a_Z5YBT?VfqE0?%L|#6^%C@rqn;tALWsO$Y*HdtHGrr;`Tajm%<6(f=*>ep z3AvXW9}L?-VGta*zFYlWz%sOFyd_|I5F3T9q)8Py1*l zbK!W-!WC-ziUldp7U7o(+LeCrHoNr8*QIx#JeEV?B+EZ%vad^~X%w0^~mKnX) zWi{Pmnx`*8vIN4T@TZ=cNTnw99Q1ga!u|#MMgG=9pN&eay8Cx}OK-i4y$0DxHWlGh z`>Ft{fS)Vk`@|xGD_Js2WNi^5v|%7<`_@K(rk%6VUz4zbvh_;qL?BotyYKwj=3jE!@~M?z918E+2BOw((XO z2Tq74DSMbc1JjN_8Bm5tdvZGbC0lWu-LKVk1fu72Q^X5SxJX-JLBvJW@;I;ou0>6M z&lqsCAxZ6TU_gtL5@N;Y6?7BN2_+r2NmOheF_Zw*M1<@_aDbtIPkAmeUZ!yOcU@PS z2$RHa>REfQeOa|8nobg}NUdma3~#2hmb6#- z=3A0M6r3cSAEzM+mY#(l{A3FW`<};+*c3gNzyRy*+o6psFa&3$vd=_iMrlNU7bx|B zIPWhYZ}Qv*&wkbPKKv2X-QJVRkc$WjelWZ>f`coWlq7v`u&Y1_+>WFe-OQRdlZ@CZ z+sn}p4dX6D`#GVSigl_{_T+DKX4#c+#F=tNJ1xxhag~_upAjoDPT*?DfLvKhSmKYq zIpqP!9T-6$&ngoBFa8ey`7m7@7f?$90zU&k00ICG0LQthR#XsEI2#2306!Fyv;;^7 JT?GID0056Ke`Ejv delta 1154 zcmV-|1bzF(3xWz5P)h>@KL7#%4giaBa8&Bh*5+6Q001}-kr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6;{TQrmx6Zy=dAaCSydFw_~`*q`ne}fPi^j zls_?J>CpWI?cPLxYTOOT|AB`p1i)#KKgp-JIRTVkW0Y@T@k+f%@{X%4jXpY*-(cnG z@dGt`z#-kaK;Rum{z3;&ZtR)y#~eSS?;y&qFb^tWA{x6yhvHckL{F69D(9_REoE|d zEw7u#cT@jn%3vv%G_rw~>^1`xt*IDG062rqV5IJtO))8d{|pWA%yHHBlu3zzhb$?u zQrb0-yWa4Sj5yvZVGJJKrBT_ndE21DkB1#fR9$gDC8{{e=I6O4_;DfMK2g~tp`E{L z)n7@GbEOP-r33wwH&YG1(xqBVh4;}9!N+aGh+Wsm8^!lpb`al(*@sru&Frj|$`9o~ zRgHK8=Ba&u$TV@hLvfpt-kQ4PMPR%jK{s_bc&F9N~zHqbh~y>LZNt_Q{~ zQ*6ML!GrRsKr)gTilx=_2rvJzaLS8+0}WP;KtEuARSdo%GdS=@mbt9rMo=O7SDnqL z95I%5nPp?nCNsDgm3BGsGuMKxGiu0a*8VqF!$}w~yJ-mA2}6>vS!f+Jrm?wdlUqD* z@XI9N={QC2aju;uQ-stuXdq`}Y?hJ@M{c>qQDhUEhDCviLULYz zacEZ~R-0i+So)1{8na!yObR|)iD3uKDQY-fJ^DVR0-Ko}vM(3DaLa&1(h_>kYM{|m z66AgGZ7IiSXCak7B*bcuA8OO@KSxCH`z%|+_(ks5Oc?K#nzyE-HtNcDp0 z&_552>|?b4oNx*h;W#gIB@bVmJ7lY(1{~}E%Kl}tP)h*d@Ba USOfq7I1iI|1xN;(1ONa407YLV>;M1& diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.9-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.9-compact.zip index 10ebee8a2abe966aac2cbd6540fc63fd11e4dd8f..0068a87b4c47c34e072931fd0bff312ab95cde03 100644 GIT binary patch delta 1463 zcmV;o1xWhL3atzqP)h>@KL7#%4gkrysa924=>&rX005B|001PD4+STYLL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#%jMDMT~L3XRWdtmF%7rKv?<&V^HB^e?^bQCLMoG0BQu?m>20Hx zFBS+%Uc*V$-;@to~v=uJYjRe}o(vA>zGEDK(6~HnZ@(_PVMKpQ%NKjj? z3Gv{YFLuK{dDk9xzt8TV$>@1;5+8_AfoaNBZQw` z^ePt3X$v-6%mpv-y)u6u|D)wArPwL^xGG12Be#IBY_JT5w|`2tNYYQ_>mn7C)5Gh0 zfhl$xp&4EJ7$g^){);`QlHRuGIp&)whRDvJWCIAFBb#^WuzkHP;Wtm96~(rectz$L zjnFje@}=gN56s8=+^@>$i8zB7KGOrI5#BZM_`92bjo{i1-OqnopKF(UmJ;u{j{|tR zh{N`RnkJlgO;kg3AdF%8-b;N4xna=!NP@`m3 z;T1q#O70YA6yJa0eoBaekov~oC`Pjno^K5s2cRWosm$D&0H_9E2(P=CV z`Zf(Hw{e+!CBI@*(g|01SXFHt9DGFsh{I!XI6q9e(jy>&3+iLnyOM=CR&ku&IF{ul zf*YM4R2Qd8K@v(n_vtPbKt(m#3L#^YG9&29(7Y%jXrF)BiS-Gv{M3=;-*?ilDdIqs zWjXPHnA&!eah7qDZ3pE5+g+%I7HF$;$yqLvi^S=WOX7FxQ&0fGXmc8z61u1Hhjt)} zDjI4}1=~0>lW8Dbp1u?G$vP4o6)zN>L7c6@+G--HK!tj6FNG;%YHG5o20JV{t8NGG zKIe>vDDi(A?0Hnm$!SicXzOq1JGWlWT}R4Y=Gf!xRzU`9ojEz61R_kFHoN*gw7{&r zb>^;uhYB0Z*x9u?3zU;goG4wlD9Za`=}mv3>UDz6DKiZ34lh}m^Z>5|U?jzXdbmF2^D|M5uW|6VUtI-xgUqHQ=wj%FlzcP z^UkAAS-fADOZ92`lcdzMszLw}L`AY1X*l(TM_8=xDplhS|+k<|1brR2<+&1TOyLy_T5w z;k19XSGk#>;AD5syL2vgZ>@AHSAt09IVf9>^J-!~s2?^H^P!>WbzbnG5$N$`2UQXY zL*cW04+IQn5!YwzWF+2N%JStM z&%{6$+$*ZZ{YWEvS#yxCBWQfSn10Fsn0wb?P)h*@KL7#%4giaBa8&1Gt*4>{0043j001PD@C7H4LL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|c?G3>D1C;R#A28u_fugF=wXxbwtV?>s>V}Fe7 ztRbnc=k6gBn@}fs#Z)I}>;QirXZSUQuTlOX#U0njV!-J64Xj;{zxp)jOZ;FZ9Y?tG zmq79br@Sk?C*-HCz0UVHEjX`l=8X|p7owxaNTvWckQKF#I~HVtl-YZCKi&z^6WJ!K{>W0^$~(rKA^tBr<;kQ8RXvaG^7z zCM8P6)3%Rj7gyTVJtQ=}qIv;7;977f?2PU)P;7^GpX1*`!fsfuf~hqbkdIqZ-$5u3 zc3dV~m_S z<*jt6@~O#*4otfrfKb-5iCshkOT`Xb-V&^H3PQ#1nvRSgx1}mKb2E-bj7s}G>KBq7Fw6$5t6NiVQQAsxt4}$QE@`^!pzESC`~4|a ziO1YMhW8d#grwyNF#lkC2ET~IVc~=>a}_Jhb1E{}KzI=|34S1pV9gsDm z5g5&t`KC_`tSa&?iu^&SdR6cw>$E&QTcy)TMHsE1ANJX|X`D)#^HUYtb-e}YPZ?bQ yI;0^ozA62!)XGpx0Rle*KL7#%4giaBa8&1Gt*4>{0043jlivkM2IK?)00009kV_^2 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.9-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.6.9-legacy.zip index 20a034cb754088412cf7d005142102b272f24967..cdb2d2d02233a8b0c5cef6d2dc0ae06aa5642913 100644 GIT binary patch delta 1323 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 asa9>@qq1NH008S1ljj6T2BHN30002JU!+(7 delta 1213 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 q7 zKmxxqDXbWFX=YLG)P~!IVcDaLqNQ%fzj+WPd9YLGP2f!wfSsycm2>Ct!g7aN6I~lW z(+3w5rZhn$1cV*9ZkK?2EL$ho-kH1rEZH{foXEN%1wnDR8F>W;Skj4!O)U3;)Xo*t zyXxqH4|b+6&7!y+2~Su2^a;~sX}_<3=j@p=*={qs>bdfxb5f+Q6`!3CD4s1ZRy{n* zDpf3X`r1i&X^K%e7WVdD4<*IRW-y;z?3*{$(RmgT`CD&QMhU|f)#+E;c{Z5-RAHNc(nsV{ zsgxLW0uDS@Vn#Q_+Cq*q@`X|*)c?q6z}LBZOJKV1TKvaXd5^`B@{0F>cLp3bguSV> zaW}}AFwYexAu7V-oxV8vy-*Rz5Immv)6ZdJb~4FM>s}$zpyKaW|M0RApioNz0zU&k00ICG0L!_l ZRu1{rYF`Ba0P7W#<^)Ivp#=Z{002Fay8-|J delta 1212 zcmV;t1Vj6Y473UxP)h>@KL7#%4giaBa8xLR_U(!U001Bm001PD%mpWrLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|dLX9qSAADsB@EYccQLdI-h?SuSi7X|K6?R+wzTqjH zspNquLmTRGeUkCbT->R0XO1Y!ftjXny=uD&c6bItNzjF6bT7~nuw>2#E%;Jab<;9D z@sOpqa+ifQfsl?dSJu0k4gP)Q8d``ml&Rc^{UZ%PeO$}enOQx5&jxdywmJVB51--HCf}ZrVpwAnSKT`4vgR@*FOY3RQ0KbWWk0hy z-zO!OFrHJl_M~w5{2G6guh=vClJ&=cQ~jO0P>ZNE;)}^^@~ERZg9&-DGmw0nUmvJW z@6rRAegcQ=E*2*SkPCM|Ij>BgMQvQnBXv$yVF;)jdGZJ&$6+3a++CR^4u(!_lBDKc z%$2Wf4j{cbEhhLuKy{;eXg!?MKQoNrMiEHla?ik3SAn(J`GL2~?Y5etrF#`edx=|K>?2=(QsIDXr>+LAk)B+i0--hYg0_h1XYBBo?x_ut4Bz16 zp7{e)pUxs7inD(_Q=nP-jy~k+iZ}eEc~jD^{?e*2(iOJ^<@rY-K<}gT_RQgaIpv`t zO6_Zt2c5R_RbK5~>xh>B0eEv!aF+c(Ara=ZRA?HhD&wt4Kdzk7IQS#o+$0qhFjPO% zy0&2>>R&P=#7<;&Tw2EB(wDrHlp*ALh2+~{=C4lPLOy?8J_@Vb`!}+ZE&nYo?_&`m zTHp?49|~)V%xSjQlL~_7!I2@=ML>;=;F*qi^ZsaSJe7q#&LXnZR?-(y=zGz@r>orx zD1}s4s5FOD;t29bDE$N#C-Pgnp?eQsWqOZyx$wrO{79xGRURHJD+_# zVsB{0cras17XbCZO_Tt#UBm~1Dq&*dEtI8_Onn7zP#KmVWhA za*N+^2NtFfC8fI#^0>S=aV(rYlnS-bJLi6ZaI=4^2oMM=Ndj-K6?_r!7oc*yqxI8Q z@RHSAt_xnXl8i79hLTyjWSyh#$ZHoFfbQ%TFumpmHPT+)D`Od!^r$&ru|?kfbzg|C_E&z)(v80zU&k00ICG0E=;O aR4569_U(!U001Bmle+~-2FwHi0002H4Mb4@ diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.7.1-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.7.1-legacy.zip index f7d4ad12d06412cae76d1a6a774695416e8b7026..0e264b72e7e391acc1181b6f31e89e38e318ab75 100644 GIT binary patch delta 1283 zcmV+e1^oKU3Hu5gP)h>@KL7#%4gkx!saDfD?rYHm002=F001PDjsz!>LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#{DkbKKU9)F)>?l`=7KIrT0dqCz7e#v5c{^9ZjUj8NK-t7zBV4+LALy0 z@Zf!C&dzg|d;5cE(fEDE=&*0LWoidlUtDnYlPqA0T0L0DGUO;~`-24`_xGTdpsaODKPbz`Oe2nK^iYyo&q4n#Rgu^deJtjoX|i62W-5YBE~h*`UbEAoeG#;m96S1?CG9WH|+u#D@vo~i*_ z`Qyg(wOKY;Z>%rS^__&e&Krs}(pc>Yx?P>Cy%U03sWs!Dl7vbAhb`EXU+tvGFS)G;(C34~4+-gK!O#QuGZ z2sJY5tSYD)6`yfg&m5dfW{8jvZwo^Y-OVBVAWAjHL-T$*F7263$y4(a5l*}R^h1YT zd#BLn^(}C>B4Q}*0Awr-&eWFUm*bf=Q(*gP&dh&5sTJ|#d7MH9pP;3F*FkMp*!A z_H`W&YVNp8_h>a=5RhhQs74abd=ZOv$4Az5CBVE|H4{USk5(HG~xNw~lse~s(Xgq|__sulnkT2klcj~pqag-0Ig(5<* zy0WN;q;XQSC+*8xFG@Tym_=BTLlk(D&ikLf*O7lxv$=B$*XRqnB>;OthB;6LjHy!Jjzp?3o+gd0W7>zS8zn})1S z-K3gDsP*9GecG%jmfzzsA**=PYhhbqp%2vGqOH6Dy^O3NHHclB-~04mH26~$Ik*>- z^H5OQ*_YDx^LyRUcy#{mHWBTUMARPfNdg8^O;IRw_dGzlzwncJ8nF--YyCN8Db5d$ tC;YK7j8IDf0zU&k00ICG0L!_lR?|7|YtaM%08tZ@eFR7b69oVO005o>dQkuX delta 1106 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 aa8%2n=M5tS005j0lP?8G24w^Q0002$x*1^r diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.7.3-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.7.3-compact.zip index ea955841b93d2c679177dca89d4705edf2bc36cb..dd9bd2531f859bcb864ac1d8e7e63fb9f20cb972 100644 GIT binary patch delta 1421 zcmV;81#@KL7#%4gk)%sa6yDA!lI)008S1kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+g^wPHy-G4YhGr|L(L) zJeU1jjfYHaU~%7n8M`)H=qpMKuBSrm5frMb=RXWz_H043-7rZ1z}CXbl^;hFpaaNk zCH+scNVo4c6ykxzw2oCDA3zEKU92_i9HN&y ztwAzjWwveW=E+!89_leZv5sjQwe?AT8|58fJFy_(>Q>Hw!!?60xTl58{pqH0=4G#P zcd|?F2U)@J3qNj+)sqi<`BGV@?=Rz6zW6yh+*_%?WiGD*-`&T4g|(@eePRuOy5i

Wv^P8&XOvXo%9K-d{Tc|1&T34>fivL(Oc^cS3NgHHM0n?5@YIgp6p^NWg zMi|5S(KPFSne&Nt0;nTZ5YlUVV?UDcb|@#Rh@=UFS3Xi(Hru?E4ZHhhm%+?z zQ9#7kWDV({(!tn6$%Y&0IDJ?!?ixKdaO-DaUZbafI)_%x2g%JeK@ zS)>c|xN_b@pEA!&0%(9I>pvn9sm*na0x(jL@H~k#YG{1lm?nJ?X1g5dgW1BVGs9cH zf-Zddd|QKyHmJDubcIIftF2ZF3@SpaT>t}r&8(T}g29vF_OLi&W%R&HSq8^0AlUWY z-G^O=lL4klhNHGITO|;^cAHQ{&XdNqIdw2JEYlMznv6WsT5bvKbqa}Uf4i!B@8_0c zQuc-aTIwIfLGGG9;|SB*i9w%}4=6^8bRlI@OON>0KKe=`++*CO->x-7vm%NXqQ--N ziQ0)r{UksZv1!6F$qZvaxa6sUCIty84zGEc?PF>&;=6^MW_K6T?42NwJy0U&R&}v! zZlpRW#AS@;w!23kb5-ZURjk(d&pfR9__BLT$WOf)3}KI564PvZ45RleVw*f!XkYb1yZmZPA)lPI{+zK>CZ@1}(= z`mxsXzKbW-TR4#NGU=cCVO%=m$SZ?bAF9)v`nMa;YgY&zDU~Ixh})Z?(zFt1hB*Ds zk?!dAE6g^->{q66FNLTQ1g6sRJh%}a>2~?voz%0h=Y_c-7!${8ot-fq_*Ha&9rd1d zx&PsQo;MsQ5^^=V)$UWjkjid)ZKPe#)A3$8*Ez3r_!=M>b`N`z(+T~e+KLj-EB_^h z&_J9Z$}3;QB9zz&I)#GwVb+eRU2X;s5Jv3Jdp*non78mTf<}6z13y8CtA~9&L5UNr z*e62jhO*C(%!M|vfcG%1ULBWV&vhIR1DdiLyDsfEx-nSIaa_~q&K3cl1IG9E2c89} zJ&OpCG#ui(_?-C5xN_b=qLm?5L;Hi-!WQSa6br24cKiQ&f5iY$O928u13v%)01g1o bxv5qY`5|Xv1pol+6_e!zNCu+?000001*WmV delta 1211 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 bxv5qG!_8!21pol+6_exyNCu+?00000RUWkG delta 1210 zcmV;r1V#Ic46+IvP)h>@KL7#%4gidCa8!&qC{c(6001Bm001PD&IKotLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|dLXL!_F%eDll62mOBW<`LvzfF~?Ww!1lVelR| zXG?jow@(GgE1%*zcU%EZ7uA0rX?(gh{Q?ra$-L~_GTcg2-pDBDDPp_P62TzHC6gl& z_HaoYy?nkZe>i3RgbW#2Ma)~|w`e6KyDFK-P`n&x8`AtKD`?rFUTad)`<;nCSF~ON z18@A-y_G35**E3x`JCjr^8oUB>;1j#DqM`Uv+Z;Oa$^tru??Tc5Db6Mt#s?M!FcuC zoRR&GYNkuO4l-)-@uHs*B~R|C#I@NJoe;$W?Pnr@)(T)^WJJCSF|X?6nvj}3#N}Zb z&%kf})RtHxEj|>rSF_U_W()vmE5x=pki@gho^idN2bx!69*~nS^u5$Z7{h-Zpq>^` zi2;#W1c;P~>ts`w&~Sf2|6x-SLBNQ13U9DpGa%NOdgCg!KYH7YvRAhGIz z5cGoKrY{{N#k$vH$E?UFiZeu|D~rFxke# z8^~a2KVaZ~be1TzaqQmZ-E;xyRg`1FRvU_g*eBEjAHlYmRWNpu=V!sHdy8Gzq;m>i zc^VuoZlQj3w6gr{o#-gD<9;>z<^xL8di#KQLvTYh^Gh?wH?!POQvM-Hh(_Hp&VY9B zzr|~p+wM`Sk!OFV)#sLb@lEm4=j)Rw&oOhfmhYy3TQ-&}am9RFt+gg$;Xz`)SVpaL zODEHWzs{wy_ChreKMwwtL}ypf713{9tbt_FCTs_j8-=V(oq4>C)J&RHuw2tiTu;mT zZzgAa)a)gs;P9>Z=#TvYmk(R%IW$Rg&kFnb>P6MxtZaW`R2@kE>85#p+}jtDS|Hy& z!e!-Nl4kMOv8H{A^@;pd=WCUZk*lbDgDWm*CbP-16ak&p!f-$lr+r%q8~3fFM!efAQXF0qQue~3Vbb7BrAUgA z$;%`v0{HL+m@u>*>*mNk_G>X@KL7#%4gk-&sa7?@*VEJl002=F001PDjsz!>LL`45*K@rV zG4(?}j@uhy5#!~!@(Wg;kM&3z^RO>c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#bpZ+$fZ2oQ~M~vmm z75Vo%$WjLWTz4M|%h*%BBGXF@0qw?8#T}j~9UYf)k4GmwS=F|`nOGrKu1^1VsxtbFt2i8HQ z`1xqbg@o0k#gTuTPQYeGfg=rQ&lWu@0_GzK!}#l_>;tr9zE`YTFzvqAN$hK?ZaNUr z{m{mll-f1s*$W+>&v<4ATSO0UY8F9xPB8yyoOIzS(XfA@c6pJT=SIIb#JBNF)ztX6 zKP?fG$gMiz9*HP16M-joIor%nS z2KvD2aVLKqqiMt1Z(8;z@h`1vX-vm}1RGr3{a=1n0v&abxSLpeLX*9EOsHreOf>q&Hnf wfRlPh{a42hP)h*@KL7#%4gidCa8$4+HRK@#005j0001PDK?Ns~LL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|dLXL!_F%eDll62mOBW<`LvzfF~?Ww!1lVk<)9 ze0x)C1~g4F(A1)_Lq9-L)hybEC^$!1?~cjt;#iJ9X_ygtFK`GK z(Lif&Ddj4J)g2x5c!ywKJI*X$1wRfFPYaWxGxKf3B`jFvF-#Fst)0JgH;U<2T2}MG zPj&)Kp{k(D73U|-Tdy@o8WB&3J5VlzWS~sa$BJ!k-wIqKn2*lZ+r({~~WpSrNOqT?Q#<`&ixI%Dy%h`0ql5r7&o+X83 zkI}{ip;fcrFMTDzx2{!!QHi26RHy(0 zE>u*C@yO`%DdGB^aiY(#deYZk=p=23kxfJxU;`U~}ZHI0T*_DxcuLl4_XA3d?o#?t$HdNJ{Roet_8Y7{a z_gCv%^WHI!PSeZLc$^@V%(PHgp)6@ZPezlZ%wKz~FUDmG9uz<+kuXx-(vW!5wwjLq z46d)(W;gt7d?u2&unx#M#4nR(F{)x4%segiUh^XUM%RA?>9HS1?chohusV5#f;}dn zl-rM$Ek8NRJ7aN$%@KYS-)yJVYNxhU@S<+!s{zm!%#V&YnBe!s1XnrE*h0bZq1id` zsF!Y)nu0Z!r{VRi!G^#~?)9FQVq13ELB1v4UZBz4KAFXfiLFvmoPoN={57!G0-*4H zFIMJ&nDKv)^t(>Y7+CO;`Yw)Q4`LeD6w(7HCj#@*V94?w5yeSg<}{*E@c{EN;&wqC z+GuYwnl8d)zqt0zIU{9hBZ%LQ0oxF{l7EkcP>F=xWGA?9CFxX5os^R8Q8KqiHFsNB znZ@juQ~AZ>6c=1K*2QFv(CP5ShGk2{b+0%4)aD=m=hjvxP)h*@KL7#%4gk-&sa95apPOF=008S1kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+g^%=ji#Wz+`oO8HRnr zD|+RWeQ7>Q2`pNFNr%N5da)%0m96M#X$)qA@s-!9z)PS#`8g0H=SQ}unpWVIx zj7b!*H^;n5IHqCu4B;PTjav_%vm(7Nr$14`L#HrSpI!wX%LTywiV$03Qy|}x@ZArD z1S|DJ^%J-TlzPLKH9$$og&ewx$xQR7$b2BUbfN8Mg{e~F_x@w_hkp@kxGaoVlu-I; z{$rEY+N`sG8H|89L7g=gl^_3&ZPI1^38Ritm{0G=dG8yRaVgDEAtMhSxE^;glB#_9 zhx!Wh4k^rhzS=k21rV^z@t>*MP{%#D#!v?Uw74kdH@7E4k)&>=Ws}KEAgs0D;SSTi zI+i|XbX%~pn4fF^B|MLXAJ)u#vpldo%9Ej>v|gNliCa@G&v#&hiNNv|>i*Ugp7{C@ z;^EBbH|>diGV9+%uz5Nj0NH!yMV0=KNs&P#mugLJtJ!|s@PLjUUigaBsAZT|*}*{N z;QB*Va}EttonK18SSQ%B?}7g=?zIOT8FV$c#59zD$$$QQ;cz>B3A5+{hf5|EnH`U* zqMd?&ld)g+xA_AenEwMWX%oe8R#Bn8mc(9DUzvef|2P;rJy4fCaF%CRCnW3XMwEa} z8sR88<~=Uy;(&AUF|Q6%A`*}E_^eMy!x%wMLPDJv7zgOOdT}Z?--qb;;RVJz_jw%_ z!!YLRvC+ZtLS60EA$Rl!5s)>P_tje59&Z?b=^}~802#c%&iRD|^>UO(dm>?2CCMcK zE;XbQ20`ecZTZV#xJxfc4q+x>RDNTfRdNJ)!{s}@C%(jX3nUxO6^?ix?;Oax-6ia2 z=~u}A8*@RQI3mte5DEvptx)mndQep@K9t;?l!@_g3Z!_4SVfQ5T=cO1l6NLv>&&Hp zb9>dm7(cYd#bA?=>yWLtxZ(z4SIyIZTa~t26rMnjqdh6rP>Ypm0+qUuFPmN${6ZBG zTVHCzpxLZEbQ*lZ&dY>L@? z4t`-}+R@t`vE;+nCBl-^0mPW@tx z>yr(C*lVn*lYP&iU2B47NB!)z{X;H4tBA(jC9ruiq=LO$fwX}E@FfN@)JtlA5W-E) zz9JcAN%)cj+o92p)2AU2cAj7A7-gad8UxUSL^b&h<-ouLUb@uj7;pR~UQPY_f9;40 zhA2^LMt7FkZ&!T|?^5Gk8y(P1s#2&_!z>WI7Qp-1L+7u&dTx*IWIInY`g=Rk~e%+j319#=AOrX*NoPngCmUy19t#6OY|M%DG&QMDM0zU&k00ICG0MEIp ZR#teQn_mS00P7W#<^)Ivp#=Z{004Wxz>NR^ delta 1212 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 delta 1217 zcmV;y1U~zW47my$P)h>@KL7#%4gidCa8yUDUA&J3001Bm001PD&jlxuLL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|dLXT>(yI0J(Tvb2l3qE<4ti6&1)M6GM=|66!J z0@NE`!@eFm@??B5-TU)MNuz&fAdB|7(nXyTT_yE1wOyJkK_*A+F-F0*soTYz+pEP4 zqCS~k*|8>B8qD8N(#C|J72@9CLB-jBV1S*a*O)pA=N>v^zwLn5Kg%H7dErE6dbfqozOeiwXZQTa;06TOc+u0qoO7a`G0sC7# zHLB2GuqoN_r0g7(S?v>*S$lC(sw7?2E9ghD%0| zS8VJU=zEtBbvcaQN=N`O3OnYP2+_sbrB3pwso^UyAAX9Pm&HEQB?CDUebTodp!9aoC--pjI|V*MTTPaYcBrY(Q>qsvN*r59J!=W{rk`|d%gb4=j9WG?2kr~A<}<{j1Zrx z_oE;H30UK%J`_2($xX&iM_&W7QJ`^8!NS4YAF*CXmSca$z=_pCN=Uxu13a6kWwu&o z9CnF-5MB2;G*5-vi>5}pcUVjm3nEx$jg%7e@k5=N_dz`iU}Hp20;MFIfbiuLUft)9 zqJDPN)JAgqzg2!%r>cFyO>i!WFyD=ZghE`YXZ*yvsdikd6u#ajrZEY%4eG&xR6%GA z^Ls~47`cC(-^|_|Ug7iLBckg1FE?kxfS>nz9*^>+J=)-4Su4HX`1&H&m0RV1QhE?D znTcri&QgaAErlhslvr-e0|GE-qEEm6zxde|D@QI=?i-hBfQz%;8}_+Idx}6R!kjhv zn)5iVgibb6wUx<7(3cQ;RF}0HCCU25i%?tkaQ=U@>*F~()3rnWj`h+!9hT62@TzNM z6!iAxh*r!%#2F+6Yy%~FR&(1plA1{!kVr6s+GzjpXyl6~qDsOZp$c+QeJ+m9rlKkA zA#|Bf!m*!2ou(s)u!o|Fr%_bIS~sV+%9^q`uw~?$ls_z{QUB+8N5W7`0Rle*KL7#% f4gd~}ad1>et6jX01ONaa5R<+INCwda00000Aca+q diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.7.6-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.7.6-legacy.zip index 82b428f4156b9ac276423afa82328d57aba3a8bc..d5f277e75bad7d37811e23465e632fb291e762bc 100644 GIT binary patch delta 1279 zcmV@KL7#%4gk=(saD3t>{rwT002=Fkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+g^*$+xS2s3O*8Fo~S? z*fs;BMUfSzQg~s1h*BCuYmc0Zsep%O9#L9Oq31M0`s!w25l0#K6YONu%!^JYiMP9* zZNYN#73lGnb@a8_(l1~I%zvtQl}DF860)LwqQqqU!e;Q8K5GWKPL+H6_uymOO^%Fx z*!`$cV52wA2UqfRPHh_ZGg>={m>WnCHc&98Voc zOoX|^t)ZF`d7qLOS)N=t=89Wc>4bThp5~xe4n=C9TYC#Wa&J7x*sD=M<3~ZSCSnEF zp@S8a7@C`ZmF8)2T*$@v*;b2Fnjr_CEiMA4jJ?hksKLErE1*rMZNWUqdI&btzYJa< zKu*ryjYL!geAoaqn~J7c!m5&}5s!#JncL&H9fwwFa>w5e#2R_Z_xtFEoS8ozmS1C` z4?zbGq@S6G^jFw-;)hen@p1HVs~__fS@*29>t0%a0YS1L2s03^ucuvJU?*u$wfb|m zc)(=>Kyq(?qK6PX5vXd%-0j-0lszsok}tg-0T zA&-_!t^C40Lp3Un+QtX>5KXTrbznrDx&x!BQ6E4_Kjs$2-sNSIOg*nBW(EN2^huW&3oAtSsl~YnM?*JX290HzCjr4fp-4 z`C|KNhJNcn6W$jc@c3dVt|ma+!C!FkLVP$2&vg?a3m4Il*W;fK2ah0H@2ndUkE?~9 zIsYvYIvvjPi{0tP5*@D)RRkt0ycO7gW|d+GH3Q<{yL;4^LhZ|e2m}&U4C*X~vNIOH z9kt6)hhhUHdK7;%dKXV)%BUvrBHL%^?NC`65?g9Ufa>48-Lj@;DtW|);aBde0JxS4 zgBcXHiAH))37eqRoIi&oY{cVISX}P?pvwXY|6IWFTc|iH8wX!>XAOZHtW7*q_Z7rl z1$2OnICA)1v&dv+K;yO7&(I$(VudI6Z6jc68=*hevxjumP^sBbSJVUm08tZ@f&@qg76kwR005@HWU&AM delta 1111 zcmV-d1gQJ|3eX7~P)h>@KL7#%4gidCa8v@n!7U~P005j0001PDK?Ns~LL`4DuM4|1 zvFXEmrMFlE-|-EDfXu&DCTrwg=!ng=pik`hOPFV<3RM2&32DvGt(hJ6BsqngVnRGQ z_1`#>{1)1)aPUjIE*u~%Fy(#seI|dLXT>(yI0J(Tvb2l3qE<4ti6&1)M6GM=|Cn~B zd4b;~7w*~gXrQ-ff1GpzEoFbH3|`3naT0Cd74*3Ryw3zBAq9z50c zVS5aO|7)~fkF|3cr}mi?=R=BVPB`Gs8{h?&+gU0Kd!Tr*g!KNw z#Or4lmMWiDbc;?VUy*;JH-i3p<9w z@Md3=_$y{Q-VL+8nvdjM@rT>vFeCQ&TI89m3$U}%Mqz|9&?F_fNQuJut@O(fNvhi9 zJJ!)SJb)B3nl1`>9P}o{qLE3)M)p|eguPbQ0Y#S4>v~`xDVTqur#LnnMs+-AS>zsO z;Xf&I3dj9kJN@D~71x1g8r)K$MvdaL*>eS5d_!0~~;v}tYF$0wps>ifMKL=G;vArDL zQbka669|mT6G5PA$+}$#bM*5L4<9IO;{<%U8{HjH`|p4Ek*lCO2liMbeXx)@dkCKl z(I?cgh7iu*yn#F z_+B^P>E>fKw@@s|DiigQd`Sy2BmFf?#Ma~lTdE9?afuT4_i?UZf*A`!4qKW8P&zdu z_{}+8tPX#fi2%GSjSF{ggKqnpu`H}LTugWlh-)h=MGLn0pRcdSpdI`FEa20a+ydR7%ePsbg$b>GuV9I+l1lUt@HPaoG#gfJ)%>0_w zUNZ)ES(4@H#(kR!C|46QrkA*k12F>o{>~eW0{|o!$K1ArkNpdOKTt~n0zU&k00ICG d0E}^PR06-jEhYp20Gtk!Fa<~kXaoQN005>Y0xbXl diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.0-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.0-compact.zip index f6153c491ff50c591266cba68bb700f51d8d2e36..45c48a5d56ab8227c51d1a0b96ce5b47e0e694d3 100644 GIT binary patch delta 1378 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 g0ssyGjB#*OHO7o#mjnO+X%CaM1xNV!Z diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.12-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.12-compact.zip index c6f3fc59ad32acdc865fe8fa7d2404d180f34614..fbb55e067f45643ae2b82c6c3668e730045eeba0 100644 GIT binary patch delta 1414 zcmV;11$p|s3jGTkP)h>@KL7#%4gl7c?wFTIrx4lHba9<-2)@n4afNK6v6ig?*cv{9 zWIJx^711JJA?4Gop~^A680Y3(AyIfv#GT@ANPo4 z9;jRwl?jTP!B-V#hI_^RqDX&@g0DT)Zusgy?45R(oP)xx|GbfEN+Hc`KbbAFEinqA zf{Hq}jN(i?6D?|Qh@a$}ITQ}`ndznK&Of+CAdKm=JyA&^AUXnWNQZ&KL0o%ooX4#B zk$~)rfwpR=JytelMiDa;fL#d{cTnj%QfVrRo!}L*)9Dx50Gp$5M?ZfsSozGQRH9KD zveReFf7A6c{HtEs zFd)Skd+1iatbRH*L&$%alJD&WfJNi?Xy(nURc!QL$i7<`)#Pknee=l`w~yGaGD-Y; z7fAM{1bMl}H5UAw(wV`E(3W1FXF-d>4=XhkRp3FZl8#bM(4h7&cJZagnat<|!H!%+ z=DRWMX%LwRk^x_uH@;yw9cySYtA>NqW+OY2q$RsgC?@f*mX!EfU}brOdq zYdA+a9JWR1WY$q0l?2w!N}OleRil>Wp5dUK7#dl}_7U(;jM~mLAyJ)!Q1uN#qGezc z0QC)-0>V<)ac+Na7J;mflD>W~aDc9THMXaa)@+tXU9BPBzF{>l4P&Z4oKP@Z_qv`h zP!w9m$0M|GCf|TMW@|MWRD`?S`i1NPinb$8dGv4v`+~F(#h(@3_AU@>GRh>;Vv>Ey zjm)LIIT@ow?ZK8?WvB#5y^aPF`IwbWUmOxUX#F6-k*HSAW#t` z>67i4t%0<^OYLJ9w*aUV;7=2#jgMS~zR}({8a|-6m|HW}nAT|T0(X`AP)w>k|I~y) zN2SMDP)Cj~33;t1F&xVU?NS%bCFz$cu!}mZY>7?qw$|dZ+)

2^v2FG;cC2E9r(f zlN#XoSM_h9>ffN6P&wTLnN)E+%ZJVv5c`Sq-ll`ib!8t0qy@WwnAkU&h~AJ{Xp~q4 zI)&39e&W*qq1zz7;6XHFK-d}9Kxu~0Qj!(OqIiESz(7;Ig9aY>>mgdjK{4qHgaRzU z+1pF!L98W&rAH`}kFk7-sLTrE$GQgkfw`zbXcZ`9J*6?$(2xK1V9jx1oB7+DbU7N6 zlB(Mt>=13$h_srj5~x>8oPoYKFi-%pE_K_))7r03s{rM!SsF8qd?XB9*Buj-l(J$3 zpB;Z|-4J{^KFx12hmvNaG;>eDdGc>a2~km%Hi#fsPt2VRvNP1hu&_#2M?i_s!PWNs zce9ZYNQK)9fiGb8Qs85E96){8)IX5G#LNSsMoz8k%&};?AN_#4R!h-w%gi^%jq6xf z%#R%`$-p{8SZUeu1(mB0q`qRW>CqY&M7~q1+4fR@?8rrdUXEf-$~gjl;*i?j(^b delta 1220 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 H00000UznfD delta 1211 zcmV;s1VsD%3%Cj!P)h>@KL7#%4giZ}=2V5q7;KIN003_f001PDzXd0eLMeYTAFQ^kG{*Mb43b3y`Nx%=6}^V$j# z90z8%`TeJQ-Jjy?ZG**~k?uZcpV5~mGc-Y2+u*9KY>ffCr35fmgxPW8wy=Mv0{upI zb5S(9SBh6wv)gUN0F9(oROKY3)KbKkQ_I@I#)N}wE^Lw(mDlVPi677XtD$w9&7bn7H#{DY zZUBW*w%;&|pEWLb>!N)I*!NIN%SgAmUkC*tIpXASq2{Tlg~!UK9NvG@XS=Pm5zlGP zfL=fmEk?g=+<-IW{4<5REi*)ha@Uo;gPD{rBH zJuBY5R`q?#c+IZ@sjS?yS!y6e`iaQ#^Km*pXuEqX^1$cwcYLe|R-F>Dw?;z`br%;_ zl4d&wW5(hlt78PIvaEk)kyNL*oxyCP>PB6;Xd5gClB98n96s)qXC0X3(2VXkZPPvO+TM{pm6*YnZBVfr#*Y`6 z#KxPSl2<4}VoKa=9|E1P7#g7};FLSmDx7`5PQ%_!?vsm`RCwh{G!@3eR1H67W)~Al z+R^_XbVFQUbXb37BWgJ0EoUQa=a6Z4r=SP}d-iqtZH=L(sKLb6#k5PKanLiO<-zJG zn*X!%uNcv69rr`ciwTvEBneed*k&O@gHZq^<*LwdGj^JZI`e^#m_3 z=QV}ygyMd^w)RGnsMCIL9ppFc!>h7SK$axA3(4SJ6-$4U&<2;b)ljB9=1hl0p2#}m6f)GbZBU#U zqAU==ck(Z+ZOQ_xxjam4eh=n9!3fo)dTAr^=(YQPqVL`9XP^L5?ea`KSe42=CS$Tv zKf9Ri3;=Fr4F*hdMZk^$@aL3RgG6iEfuhR$<$i+y@Ro;>P)h*or~0B;YIt_4U2&;$Sg006uVR8Rl_ diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.15-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.15-compact.zip index 30420079bc327ce36f0e13ad2b64b41a17d8d3e2..c1e1b9d58190372639f1e70a0134ae4e826805bf 100644 GIT binary patch delta 1408 zcmV-`1%LXz3jGTkP)h>@KL7#%4glA=saBo4qLunQz0c?C*YT^yhPvGVu5-xAn1r@^tzbB?%YQ`%e_yKFiEosDCw`hwuvtsKf{n!nG{h0TpA5jG!KPgB z3!#rM)*r0^ZuxJvsZi3QJ*I5_7QA87ml011F+t+;6PBP{C zYF44ZHMSo!bVYR_r2FcG%HU{EiEmgkN8Z(#hK(Nfm^q^*Q5<5t_W4)Sp zqMl)eQnCVprg+t>xr8gvEY!8c1oFYiYD7&W;9q!Bi>MvCzbtMRzMv-#OffOu@5HMkk{RUsa$Q4|T3SP%LEsCO=ufI`|N<^8yh0@u(!f%jpBwYUnvpWfsYFX%DRm|V$KYe?XP1% zh<|oc80dJeE$bgsQD#`QBQ2W-YYUNzxmI0x3y^=$yyu5FSM7f`vV{>Xl#$%72F;3i z!${hj`?->DxgZ&=OmAH6$?_RejF&sc-jSmmG%+uMF(N5XPGyjMj)v@)|LI`kU8Egw z0sM75nzt&qR{Z5L}Djm7z+d7G2hk8d{chq;r!;L&`c^k4~ zA>q5+oB{I1`eFR;a;(~<OHK)yq&z0Rle*KL7#%4glA=saB0000F-Kh}( delta 1216 zcmV;x1V8)z3%v>(P)h>@KL7#%4giZ}=2Xl96%>;M003_f001PDzy&9fLMeYTAFQ^kG{*Mb43b3y`Nx%=6}^V$j# z90z8%`TeJQ-Jjy?ZG**~k?uZcp$I=GGc-Y2+u*9KY>ffCr35fmgxPW8wy=Mv0{upI zb5S(9SBh6wv)gUN0F9(oROKY3)KbKkQ_I@I#)N}wE^Lw(mDlVPi677XtD$w9&7bn7H#{DY zZUBW*w%;&|pEWLb>!N)I*!NIN%SgAmUkC*tIpXASq2{Tlg~!UK9NvG@XS=Pm5zlGP zfL=fmEk?g=+<-IW{fR{zY1dyRAWp=6ou}kAZ`~2N)A8dLX!TN=&Ps zP368Twj-7W@#*xi1%!Xdrw9aTW4ZMOU(kU)XVTDVPDG9E@rAjPp?45?vz$M|RA%K_ z@@_SF;EFd25JEP0WmE;s{~^YiToK?IY*cvB$Tt;^|3e1_3SHCkR&)NFqH5c#e=`(V z_)vgG8*>$Ivq;a>k{qp>_v>!(aF!6Fx7lXGP9Mq#Fb4LaZ7P3%NhsygZ3mJ>xGZH& zEQ)F&++K_#qb0BIgomZOTXj9$3buX4TgU0goAc4^KK-jn+yy*+>WtGwjgE=?3K|OW zg`P+q@62JEP|VLZU6jKS2+FQD?A`c%OIWTIA&eP;-$$a*{pzcmp#@C4`;V^sE86=O z094TDUF*k2#teU{pOT6|_uSTiU0|gIJ~R${?Ep{0VKQ6tQQRgKo!;i-T_liMNiVsZ z7ffNK{IK(_U4}ty17mb$f2y+ki{AwTAJK*ujdm=N?H@P`S8NTZ>c6KM(se?Hx3wvh zJ*I9n{ZG5VI|!;m&I@H}U*zQ07L*FuCFW;C=LRmi>$6dbqD zQ=QK@?K^*!k-AhNS0c=pv;v}hISkzP1n~LdqGWB;svcqfK{Tr-g7Bn+De4=4jN;M003_fldlCx2Gs-r0001Qi%*XL diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.2-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.2-compact.zip index 1f97f78be76eb41b812992218f1c36a3c1bd7929..c67dcfeb1ac3be785575079d79c9b85b2b73fb68 100644 GIT binary patch delta 1395 zcmV-(1&sQ}3h@gVP)h>@KL7#%4gk@)saBP`V}?fs0077pkr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+=fF6Cd=-1bEvuAg*dB z1A8b>oV$3y!=^fa?3VgDwgshY0Yei)PKFMhls;WarxW3AyLZ?^7%FT0+hed3n$l!= z(YIBmv$YQVqOk?Jfg&VDp$DWfe8y_8XW(=t?R{={Hwx{kWB6;C%pJiLgQnx}9l5pk zzBuAE{`msea+X2{aW$x(r1;wzQMuZA5AGgW2KBdvkd*b!ufY`PrYuH#W%~wXO#zv z1y zA}eWrMV$(_OoC(Sru6y;WZNDcC$UqAYkax8gk|qOU>#M*4ZG^WYNKrh8(Y3t9`32^SdvA%U;jxy6lm-Jv*AsFM+D32>R_g zP(@dN<243pXL#`-Bb=92k+I* zJN&D*MRAaD#L#_vg!|RS`?D5orPlJD4&jggFK~cp13~)oXiM>4{|&76-~V}BjC8Pu zpVxp3`F$0zBb2(s4%r(D-xjLH*Av~P`{rbSby1sd#ckP{0S#kaPeL|m=v`xYtj*P9^ zs~**)9{D2cn~x1}6DNM5hN8bfTss8`-XmA=Tw;B^6_R zkTw4z{=yi9)e@i}{0UEZs-XgOG|JTp8|YI7q-e*@@KC|P9DjOL1}3G|9FB8;AJ$+P zBDag!Dbgm!QOQ>$J|LDM2Q1rdhg7S7jU3r-x0t6Y$o0zt9jJV5XWdp>PJ4vWczf=+ zW4UL4{>|ZaobhB@qfxu}DXNmHnxwG<86K)4$K-3Y-fAwy`6Q%C+(!H7O2#krCa?>! zKTaJZ>iiFZWV`?#hh6HAajn^&EVLI>8n2jtWHq%r zUl#SNEBp}=i4@0rY}h7@Y(lyarK0~hX*4C%keT&XB8Z6T?%2hgw$~GJX8T)Yg~?M? zFTP%pgD_*$CNk_$Rv_>y4LqMnKx zjJ$OCyGfoUxl`rq^{YjcmHgmG3(FK@p}stXfwX~u3CZ%7KCf$?kKxl7Iu|M8Fb%N8 z4W)M-0C$o7@%`IiY*0%90zU&k00ICG0MWUrR+YMAhDQYe0LT@S_ykA>i3I=v006|9 Bx4{4a delta 1223 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 G0000?<)_vF delta 1220 zcmV;#1Uvio3&RQ+P)h>@KL7#%4gidCa8$y)2KSi+002`Ekr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6p&{)*Yu zjKett(aHDDs;9+VFxNOu3-0!nF*wytIc=EUV;a6Ur90X1pzG=4dQi0XxRv$d2Iu8Gz;IBppz-7m!YvIR-nqj)|Uoq4TRSE}OP`zUuCHu_}H z#6fm)wB4v|xvM)kerPepc8{`*5os5Y(|{2xMlTQ9p0}dI)cj=38~u1)RpgN|-$Cro z_@{pX@}R>{Yk?sh(DD*r57j=GRtE{zjN^4Qla(`n1}k*qEFZrh6<&AuXt5Rd$E-kS z{0;*c)Ly{V3H@cUt1I3=m{!4Zu`lU&K0!Ph@K4gP0b|=d1>#@_cme@)hZ>{7m>rS$ z{TP{gAa(r}q;6tD;YjbNkElw32rQA;l1=T=b-^y@Vl zZvNQ8*mif|U>t^YqfL^G0P#-H3lQmS10ojlL2hYk+C<;3(9{TX1{6G8AWLPEl*wN# zqQQf00=sF&Ac)0Kt6S3dG)j(g6{)pHjQ-Ebq=PykhST99hum%*L^$ z9dkoin?rTs1)+|#q}}DgrfP_#2u*t65-z?YI7BUEX()2tSBeNRQt4l#MyC$|J`GuI zVQhNgM~kW}cksZ60mque(=@t-N%#VhmcP;z{l~i-D@80!+#`-k8~qcr2~bNI0Rle* iKL7#%4gidCa8$y)2KSi+002`Elc)tq2HOMx00011i#|61 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.4-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.4-compact.zip index 9e3e978c0712d33a7fa69ca1e31f72fee1576e4a..6891b902bfab7bf7fb1f5e716afde98685f3a50a 100644 GIT binary patch delta 1417 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.5-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.5-compact.zip index 6470eacaa0b3cb35ef39952e5077c0eb9be9f945..b031ed0cdd57fb385202a604c81bda430ebcca51 100644 GIT binary patch delta 1410 zcmV-|1%3L)3V;k4P)h>@KL7#%4gk}+sa8Eu&_h-Q008n8kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+=fQKzKS(Fk5dKwz#D2 zbG3s;)Si&;{i|SqW$dRXV%KM{x}1bmdxiHWDGt72Y(#a2(@y8=I4rbSt#^ zn5GE`O}G|*w_g4t}^;y&#w=UF(v zsR+J_Jn<%fWKy^1;s!i0X4zR`E-+EzA=Qv9P6?%ts=zmj(1byQ^>8_#Pg=r-a{@A> zT}6R5=K>^}KZd3g(X!XDunKmR_a{&i_<8vY2{=v!N;{MK)Z)8VBwTs`E-lmsot75_ z-B&p(>Yx3o`2C;4I71T$L95z#dW3K49VYrzn7`4^FX=0$RKiAAeSBmC zlf(BX$w_a@AAgeSD8S^mFoaj)OIV}X7GspOqFtpH7lgLW8(`*Wv%$jnM^v}f_`Clm zs^YGHmtP(n0+CdBCkyG`hs)MN-3o(G%YAU{8Sse5d-{~e1AlFdYFA4+Q_b%}7g<>v zT?^8J)wkMgKTgmaKRm9IQ5Zm0ERWnrOz$pTT)ce4q9SqCNy?!$dci)Yes8OMMLBO!;)?%xvV4uKvg>A)Q=*rRgY=sDDff?>28ROcrTg60uZ>Lysg(*t=3_ zPO)BZC=2L#&%m2Sd{=X5)AO5rFH4)tqaOD1LX}luALN0~LJ5@s=sDRI?P*1#_UQuV8&jZau2(Cn~th-4{z`o{=vO_V|*%*fX$ z?qlFgjk6zI3=0D9J6LXX;lHuoKm573(6X!bqV${Xq^dJhtg(lBna$Rbo__`J89tdB zVQbkGqyXJW&{1<9Sz;j!S^Q5{-8_C+O|}by>_Yu(R~vqyZ%ge@jD){uNb}|~zvYSB z*xV17Nhp9ZhkV-<11sT7SSOK60O>aV`gJ}pP)h*@KL7#%4gidCa8zS-B%PcD003MNkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6zg%J?GXPuR{poo@h1NF|m)MuF2-> zn~+>s7%;k;P1d%5b6&Ow+znczzx7;#uJKdO4ibH#1}MAXD8oHXykoJuzuliL4kO$X z`TW6--WE#{bE12Y{A4|ItkctWiZB>*YIDm{>YK?#9HR!z-gnbG?CrCu1Nf}HkGBph zDCN+IUI7P9Za#?2y1B^!9X+u@$W72~4G5qi6R?TX%P44n->mfkSrL@S>wOB*yG1^Q z+!a!%=e*;3T^hsMV@qyhYbb!->UhUl>tOmfF^7gsh+s}Qq1}H`=Z!O^`p=6!_`UE& znJHj$Cyb6=MQ-SRZc>Zt+7ZuCE}(Co1iw)@$t$l1^yTv~Z+|s*wW#u31{GUqyv?yiLGzvkyV@gt z@UjTM;730i^hU)89rIy299Y$@m~lhQSk;oW7(2PU#{w zY|#nFA|7(=aFnVA-X6GtSCb_gQJo0|z8B38khc?gP-dg1I044Jk&cxS-q1+IiXr9c}eP|23d8Or2JTS-l*Fjq8B7qN(U+xu|G= zVK^>Rza;{JURmyKTs#3Ob|Y-%mY`5NLV3+2{W2}W+WqaV_8Hsbn%MI+Xi3Vsq}E4q z`V0ZgA)-yuPpIhjEBFw&X@3lraS<`D+%mTONoC(CYsdRLa;ZROUj(Zk{Dm{)BkF{g zyeIk$Qw(g~e?h>qI1TuuIi?@(}LbY*b;{tp+KK|wPa3)_BqvsNzOz~T*q{Gu~ z^S{l1(o#QK<}>`-7eYK@p%Tk)f1Iia?6lh3AMXY=K|e`5=05>3cUb1XOQA?3!cG@` zfo{0(kYa={A_3Gpb2H`*L7dQz#ec#?Gt;dXS06P~r40(EDXeskv?;>>@PlX@)=*0U l0zU&k00ICG0E}^PRAY1`oty*!09+80vIR&6-UI*u001biRzCm$ diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.6-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.6-compact.zip index 7eb28aaf812faae662e2f3de3a5b11a5fc8ab7a7..5951c071a98a341a5f29f8a601bd4a87fe7dfd5c 100644 GIT binary patch delta 1412 zcmV-~1$+9(3W5w6P)h>@KL7#%4gl1-saB#mu9jE@008n8kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+=fT?Nbp@Fk5dKwz#D2 zbG3s;)Si&;{i|SqW$dRXV%KM{x}1bmdxiHWDGt72Y(#a2(@y8=I4rbSt#^ zn5GE`O}G|*w_g4oLj)q<(8nR(j_~Oxy;?~r z3pk57yAi8@z!C}RDn?~v@dh<@)dDmy!cbfc~_Y z7%o?V^1L38*&XJsZ49wD)sNQ=k*mi1^&E1^9p|xs|3cFt0%~udw9nEqKYGO`uDaEd zbwH?D8;MAUU#f{|_(8KrR~RCs8mHrK>i~fDJ_M)oWA$p9>DSL5&K=aTyrvq4D2rXy zplkv0OZ8m{j&T9)KxeR%YD92&x|YwuM7}_ECW^fHifC= z$KI!V{y>2WUnWHX0V+HhDMzHEcC zYk|tzLb?50{>3FNC+%iV%$L{qSjd`kkt1Axvmod{%uHcUlpy(i1A^`T25?+5Hexej zz*8ibm;uVRp1%`77thHOxq1FrC}SBOfY5c(IIq)34gRzX8#2-?VOyYbrlSe4(TJf` z!4zm};PB$xm zW?socC0iX+q+4zqelDaY_;RS%_$V;And2m*Ph`3&Rr#^^H5HC+^;MTw>WZudWsYzr|$|e&m0z|*b zPBAnkxOCV@^ggw0oM|BFx!fFJ{Cd##C1a}c>5{bpN-7@WB+KhTtVAiQh$rNv9rDKU z-OaK|4`r3w5SyY;ZjVW}!BANQqF$V-gwc&Le)y7V7^y=}v!{nsjP)h>@KL7#%4gidCa8wE`*{Pib003MNkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6zg%J?GXPuR{poo@h1NF|m)MuF2-> zn~+>s7%;k;P1d%5b6&Ow+znczzx7;#uJJ)@E8lv)G6P*w*8oM@$qli)zuliL4kO$X z`TW6--WE#{bE12Y{A4|ItkctWiZB>*YIDm{>YK?#9HR!z-gnbG?CrCu1Nf}HkGBph zDCN+IUI7P9Za#?2y1B^!9e7T`CWfTfYLW?-X~#U!oEW=*V%n@X0Sq38aiC^m{K2+o za?xlMXSn!pR1mM;5sXQcj^$5xaG3T5)(S-*UP?CUw;{C3rmTeI-#8xw;cOR(N(cZ& zq0w_+6pk|g(@;pj8uD~!Nh028akMIk(H+c}L-L-ja4&1}H319VimvY(hJ}OSMtr#y z-=5N;7dx4MKz3-dz`1m~c)j*K#^bjg_Y?=@oW(J`2Ox8=FxQW(a<1@zJIYIgYmQ-a_4hpGk&!578aE7eBCU1_gz@Zp66=VIDJU;)nv zD)I0y&~&*h_5{e>L`WF%x%vDEEa=V@@Cz?C>~(P(6;K)%SjUy!TTKa<)tggxgyuLO z{tPyM;iYmD>sjy6tE6Bvsi<_ZU8Tkrl!L;FT?aYQZNDp1S7!WhuV-fNx{j^!U3c9` zQHvv9KRl-mZS5PdoYPjP=6yIDy*0*J6!xq=AZgH;EeUMZUc89NXQ@WGIb^5 zNS}fbBy|=$A}-9OGUt>@P*Q&z)jO4bk}6FK63_!dzrQ4t(dWUNhi!KHlYIgC0MfaC zIOf-ARquHA2C*lXJttAcvsgzVZ|c8ewSwSHO9)}u)4uZjX_s5% z4I^rIF$}nzQal^x z!E~Q$d$1iO|I#hS_-`vH={TV`=_^A#(pUJyb7-@|s>J@F)3Yh#C->8&ZMZ$z>vw}S zSaPq=qJmj$1{ZQ=Rc~`nor24L-1C?c2nP0Gd!kb|+@jGTeJcd(QS8?B!TT*7d0tRU m0Rle*KL7#%4gidCa8wE`*{Pib003MNle7g$2Hyk#000267*16H diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.7-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.7-compact.zip index b280b071519123c8d97d3c498594c74a639f870a..c3e4a2a7dde800b9d25828be811ad58626700e52 100644 GIT binary patch delta 1410 zcmV-|1%3L+3V;k4P)h>@KL7#%4gl1-sa7i-@XuBS008n8kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN+=fXnlw64Fk5dKwz#D2 zbG3s;)Si&;{i|SqW$dRXV%KM{x}1bmdxiHWDGt72Y(#a2(@y8=I4rbSt#^ zn5GE`O}G|*w_g4SP-Qo)pS5j>JXq=K_(6z#|)NaDlyucnsyQ$MfSl+G^*!s5$MX(2E| zrVczL2QYeD4AErkjHbS!3>^#5Vq~DTO6xHodVdNC{KHAM(5`kI;>7!-bNv< zx`b(Ko)^1WqKJ&WSStAWmy;$xQP*{Q_BX0-qtju3v58};$LFbIHETA3evSTuGbJ`w zG^m0CC!}9NY^cIW3HnG>8K9v{g-rs`T$ExJ$qT|%hx;9!tm`jDs3Ft-aH+HTtCEqz z4s=+3G$@Wt5;?&(Um;>N>oT>A~?}%>+qZ^=n zz%c-S3{ETR9#OsUkwep&i_;W|wTC0^J&`zhy^>KK{^f^t` zC&^YT%J3X%hsP|*U#E?%D9%?u6RU8VJ6N=8Ps>uVu)!l;cHz^1PyV3G-V!d$ydv(tRphiVED^=Thn2 zf&Hl(p>S#|okok3TpU>|Dz&5q8^U%qryrIaL`kFW^c855XW@C(QWNJ3!X1R{9`_6e z4Bue|E|?;aE}YEskuoAU$(fy;*paZWZ2=!StHHfi!-{rDg%LNVa>vBF+-MdJM#++Y zFN8$zh^Q8Sj?@KrzDqmJU5n?MTzfEr3D2Ap9SP=vIBZ>;>olfGf#oGjTu#tMARy>| zyeyxRbyJ47-l2T$@F$odh-bMPJw`;)S&kPxS>n&f$01&m z{Zg$xX7tsesCD)b;jIBVIX{^+op4sw90RwDc`*s6&??B-JYMi)b<*T4M1Tk8j>^d)E|JXNKcfD3n7sx)81_9QMr|_DI|o9InLK8WM#hH+f>j zmyrqvygW;l4F7;?h{L7B{KOIx3hqW%{%hn1P)h*@KL7#%4gidCa8wE=V-B7K003MNkr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6zg%J?GXPuR{poo@h1NF|m)MuF2-> zn~+>s7%;k;P1d%5b6&Ow+znczzx7;#uJJ)@E8lv)G6P%-&El>y%E&8E7+m_&9Tmk^ z0XV-b^}};d8vl6Dtsd>k9!D6xUEPCx&y!AirbWC+THB2Udh^$3)}I(|fianOWxtWo z!4mqvb*v^cW>T0HlE36$LYs3~j~L=BD*@7aRpUCuem%Z_qQ^$Jk(^mVF3>PTB`qOj z*>c?F&IJ~(1|>5_yZNg6Oa+Qd`B9bp5C>YcI3HgyaCVtc{*~cJyd@i1;cOR(N(cZ& zq0w_+6pk|g$|8&Y{ojpMQb;+#sSW{|T+S}#l08cmOTg~fs=>bWJMEsf13AnY{0|88 zZousU?R7AJz*z1+*I@obNuncFG}aDh73Sj$kDWrd*z?#o$ZU88wyAi|iMPCZ;fR`=HnQfZSr68l0b&TP z!2=7VUX}}0ld|G`?L{iHxG4XHR#o0Y^L3&Se>?7f?WdBC`63I%bwIcn<`^E~x2R4h z8`mk}Z63VJ>0*H%wwc~a+PMrZ(Gm?yf`fQc2$&efa22Vps$ryj16vr!r0g?r8aK~wfh(4RY}@)MAf6pfZaO%GuirUt!p z!3Ir2SPU&LmD$0p8<$taF#&!Nr{_L;j*KsVp4ajy<6#^>9W%>{8b!%(hXV4q;�L zI>q9ZI6kM!1C&MBo8@HI;|=jc9?D%sseuz}=R7>@MRH9@gTr-b^6Z!fU?QW~4b>;o$tQDy6g!IK9bejD||iGTNZ6AFeGs3Thv zsQgtt|K`bk$24Ad(IjKopCQuB`X~4azr&&;AKc40HhGPJ;x28blU&8Z1paAU@-=ZG zyt+O?5#6;EN$~?!L(e|kL^_LicpCqIt7KSdPig!CtC}q5mhWvK#cj#J&~UI(SVICS z`7abCFW|AN{Pc+E(SdL#ql?0TN^PJsO$x@{;GU#)4fcAdJFaOmYeb4z& nO928u13v%)01g0*ad1=$CSwks1ONbB5R@KL7#%4gl4;saEGB9T!Li004;;kr+;YAJ=oe7BTfhK91WP zVG-lyxbh2Do{#lN8uPF(Qtp_SNT(3l)O2y3ZV0~3#BqgeqOq2(0oWQof@C{x>J`x< zUm@kwtf9&=y%^`_Tp>|-PR6pFB^0p^TfSaXAthZW;FqqvN-5~J1)n^d{F_qQ)jpIN zXPyY9PkPrw3WW}TlJPCF?%9GkEi^te8s;sQjf~yMMd_;9j+9B_f1fO<>5s`%p=ViM zsQUR_2|mxAF7$!JFOX7+!$At1@ZzbH*eZCZeu(St^QEUSE;>rkC_;@&Y%~yDVuNIP zxgA!1flwxCi$eAm__gvD--k1icF({|VwbJ!=i*zNcB$Wgw4c~7)~_{N0f9ea5_ySl zV2NFBDmB3dTG-9{-`W+r_7ii zBI)~ybS?RfcAcn{o`ILL&BGXo0eLV5LjNi!K1s8YWz-x<5=uZpHW(pFFgg+%ixbE> z{U=aqpe}2FxmhQnDD3%HB`Y^^i=1?g4FxYCp-BO+j_>oerKw5D1qIrfO+ujHy_XA6 za|kNkXRvgypJO(@k})~AI<2DfdN5~)%0*R4a&k4+WWl_`;0o}b7i=-_Ed{MD3Yay2 zzq5oq%Om&-l3*D9EPAf4>(p&-YkaW9DgBf5)sbUG`i&7>egKq|+vA|ZdS2Q7%2o4=l6i_b1 zRm=n_R8{8&;TLNuMlnp}0<{NiQ861WLLAvd)NIF4$GKUBTv6wdb)Wz{>fmhHgeT2> zX7gCY!BptT;@JU?(*S=_|C%r4dTif+cdAcX)IEFkh3tN-!VQ0wqC0UosV}^42QlUQ z6iphjr359-82(QL9Gc^cSAo-bTlv`CTWHTs@Hto9u!~@^SC+z=96QN>kN1!{ z)1V_bU>E|*Gqh@}62g>;)7hJqA(4C?%}>K;_?rvy^5r){qc)WxC()g`dMtK>VkXh_ z;j%6w(ZiE;lL;D01_ahABQ;Iq+$^Ib`s|?u+SiAnt@ocx1%nCwx$P?1kIDIjiZAZ( zs)vM6c1TT1e+UWEyGwi{BLRaih*J!lc=9^xA=n~;UW2uNXwTVS zl?;E7@vpo+w*P_G+i*}z0Rle*KL7#%4gl4;saEGB9T!Li004;;ljj6T28sm$0000< CDV>b~ delta 1206 zcmV;n1WEhy3$+RuP)h>@KL7#%4gidCa8!{qS4WEk002@Ckr+;YC$9^;HL>Z#d!@Hn z1K;rtgMiGxRVHiXUg(I;wV+Sz_)C~)s0vj6BJ9@O?8`;t1Ju zf(vUk|N2wA$0z)MzT?6bfN(WXM%tgnnl9Ql!=<}gT{#H!oU9syhBIfQkZh5W&Vcc` zHhq{k*t@QrT?XEs0C4bTkd>Bz(dO*oFLAivFGoK~S0ZMfB}Ua+%Dm~JJ;124yoy;9GR;FbH+;ROlvt~JB)A#8$SS6Y_Qrr z8D48kc*EE|iZXgd$={KXy3rp?+w9V1Q_LV@R~t9-R8#T zJ=;_4O96c*3Y_;Nb^uH1oRAVjht^=*rEsco&V%>1kGO>4ZiZO=N?)D4-*$6&U1#*p zrv^=pPci+_xJu}1lXXy<#|CfJ_hj*ZalWG4FfE=Cz#H1q#)wBDl+BCNUUOi7a{aBG zv_9#lg;+XSu!hU2@2}5`ORR#He?}wR={z_lGa?L7?mUO928u13v%)01g0*ad1=$kuz6E Uiv$1wQV)})1xNpF diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.9-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-all.sol-0.8.9-compact.zip index 86b3da2123a8b60ae4cc6fbc7e1c7df31e100ea5..8c37f7b8f5a2699361479a5ab642294f326be53f 100644 GIT binary patch delta 1408 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\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.0-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.0-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.0-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.0-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.1-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.1-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.1-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.1-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.1-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.1-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.10-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.10-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.10-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.10-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.10-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.10-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.11-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.11-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.11-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.11-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.11-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.11-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.12-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.12-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.12-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.12-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.12-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.12-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.12-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.13-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.13-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.13-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.13-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.13-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.13-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.13-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.13-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.14-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.14-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.14-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.14-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.14-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.14-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.14-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.14-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.15-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.15-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.15-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.15-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.15-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.15-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.15-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.15-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.16-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.16-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.16-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.16-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.16-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.16-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.16-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.16-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.17-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.17-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.17-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.17-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.17-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.17-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.17-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.17-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.18-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.18-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.18-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.18-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.18-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.18-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.18-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.18-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.19-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.19-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.19-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.19-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.19-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.19-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.19-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.19-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.2-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.2-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.2-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.2-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.2-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.2-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.20-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.20-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.20-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.20-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.20-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.20-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.20-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.20-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.21-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.21-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.21-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.21-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.21-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.21-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.21-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.21-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.22-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.22-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.22-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.22-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.22-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.22-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.22-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.22-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.23-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.23-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.23-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.23-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.23-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.23-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.23-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.23-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.24-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.24-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.24-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.24-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.24-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.24-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.24-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.24-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.25-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.25-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.25-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.25-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.25-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.25-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.25-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.25-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.26-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.26-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.26-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.26-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.26-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.26-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.26-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.26-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.3-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.3-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.3-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.3-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.3-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.3-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.4-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.4-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.4-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.4-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.4-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.4-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.5-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.5-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.5-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.5-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.5-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.5-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.6-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.6-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.6-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.6-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.6-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.6-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.7-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.7-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.7-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.7-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.7-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.7-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.7-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.8-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.8-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.8-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.8-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.8-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.8-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.9-compact.json deleted file mode 100644 index abe08fbbc..000000000 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.9-compact.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" - } -} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.9-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.9-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.9-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.4.9-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.0-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.0-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.0-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.0-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.0-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.0-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.1-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.1-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.1-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.1-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.1-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.1-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.10-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.10-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.10-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.10-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.10-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.10-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.10-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.11-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.11-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.11-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.11-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.11-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.11-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.11-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.12-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.12-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.12-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.12-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.12-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.12-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.12-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.13-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.13-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.13-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.13-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.13-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.13-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.13-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.13-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.14-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.14-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.14-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.14-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.14-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.14-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.14-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.14-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.15-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.15-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.15-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.15-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.15-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.15-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.15-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.15-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.16-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.16-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.16-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.16-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.16-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.16-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.16-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.16-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.17-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.17-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.17-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.17-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.17-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.17-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.17-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.17-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.2-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.2-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.2-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.2-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.2-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.2-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.3-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.3-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.3-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.3-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.3-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.3-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.4-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.4-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.4-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.4-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.4-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.4-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.5-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.5-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.5-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.5-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.5-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.5-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.6-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.6-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.6-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.6-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.6-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.6-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.7-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.7-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.7-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.7-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.7-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.7-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.7-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.7-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.8-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.8-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.8-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.8-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.8-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.8-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.8-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.9-compact.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.9-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.9-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.9-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.9-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.9-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.5.9-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.0-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.0-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.0-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.0-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.0-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.0-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.1-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.1-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.1-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.1-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.1-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.1-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.10-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.10-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.10-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.10-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.10-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.10-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.10-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.11-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.11-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.11-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.11-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.11-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.11-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.11-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.12-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.12-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.12-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.12-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.12-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.12-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.12-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.2-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.2-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.2-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.2-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.2-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.2-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.3-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.3-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.3-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.3-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.3-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.3-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.4-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.4-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.4-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.4-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.4-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.4-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.5-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.5-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.5-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.5-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.5-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.5-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.6-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.6-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.6-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.6-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.6-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.6-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.7-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.7-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.7-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.7-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.7-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.7-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.7-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.7-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.8-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.8-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.8-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.8-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.8-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.8-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.8-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.9-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.9-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.9-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.9-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.9-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.9-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.6.9-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.0-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.0-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.0-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.0-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.0-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.0-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.1-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.1-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.1-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.1-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.1-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.1-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.2-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.2-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.2-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.2-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.2-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.2-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.3-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.3-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.3-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.3-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.3-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.3-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.4-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.4-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.4-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.4-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.4-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.4-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.5-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.5-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.5-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.5-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.5-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.5-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.6-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.6-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.6-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.6-legacy.json index abe08fbbc..bafe8a53d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.6-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.7.6-legacy.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->3;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: INLINE ASM 2\n\"];\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: _ 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.0-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.0-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.0-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.1-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.1-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.1-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.1-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.10-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.10-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.10-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.10-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.11-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.11-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.11-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.11-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.12-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.12-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.12-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.12-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.13-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.13-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.13-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.13-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.14-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.14-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.14-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.14-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.15-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.15-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.15-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.15-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.2-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.2-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.2-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.2-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.3-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.3-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.3-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.3-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.4-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.4-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.4-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.4-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.5-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.5-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.5-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.5-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.6-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.6-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.7-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.7-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.7-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.7-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.8-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.8-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.8-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.8-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.9-compact.json index d0a1cb33e..5bfb159c1 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.9-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-all.sol-0.8.9-compact.json @@ -1,5 +1,6 @@ { "C": { - "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n}\n" + "f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->7;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: INLINE ASM 4\n\"];\n4->5;\n5[label=\"Node Type: NEW VARIABLE 5\n\"];\n5->6;\n6[label=\"Node Type: EXPRESSION 6\n\"];\n7[label=\"Node Type: EXPRESSION 7\n\"];\n7->1;\n}\n", + "a()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: NEW VARIABLE 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n3->4;\n4[label=\"Node Type: _ 4\n\"];\n}\n" } } \ No newline at end of file From 2da5ee4caa89d57af91ec6c3c391151fde9aee96 Mon Sep 17 00:00:00 2001 From: Simone Date: Wed, 10 May 2023 16:34:05 +0200 Subject: [PATCH 142/220] Fix multiple try catch with same return var name --- slither/solc_parsing/declarations/function.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index 57d7784e5..ed1fbcd7f 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -685,6 +685,7 @@ class FunctionSolc(CallerContextExpression): "name": parameters[0]["name"], "nodeType": "Identifier", "src": parameters[0]["src"], + "referencedDeclaration": parameters[0]["id"], "typeDescriptions": parameters[0]["typeDescriptions"], } else: @@ -713,6 +714,7 @@ class FunctionSolc(CallerContextExpression): "name": p["name"], "nodeType": "Identifier", "src": p["src"], + "referencedDeclaration": p["id"], "typeDescriptions": p["typeDescriptions"], } leftHandSide["components"].append(ident) From 2cdc5448acd2f2d4bcc3f78b5c71ef6695eb2472 Mon Sep 17 00:00:00 2001 From: webthethird Date: Wed, 10 May 2023 11:09:22 -0500 Subject: [PATCH 143/220] Make cross-contract taint optional in `compare` --- slither/utils/upgradeability.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 5be745bd6..f90dc1376 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -90,7 +90,7 @@ class TaintedExternalContract: # pylint: disable=too-many-locals def compare( - v1: Contract, v2: Contract + v1: Contract, v2: Contract, include_external: bool = False ) -> Tuple[ List[Variable], List[Variable], @@ -185,10 +185,12 @@ def compare( elif any(func in written_by for func in new_modified_functions + tainted_functions): tainted_variables.append(var) - # Find all external contracts and functions called by new/modified/tainted functions - tainted_contracts = tainted_external_contracts( - new_functions + modified_functions + tainted_functions - ) + tainted_contracts = [] + if include_external: + # Find all external contracts and functions called by new/modified/tainted functions + tainted_contracts = tainted_external_contracts( + new_functions + modified_functions + tainted_functions + ) return ( missing_vars_in_v2, From a15ab76027f1d194fdf13c196efd1c9fda9268c6 Mon Sep 17 00:00:00 2001 From: Simone Date: Wed, 10 May 2023 18:11:20 +0200 Subject: [PATCH 144/220] Catch Exception in more places --- .../slither_compilation_unit_solc.py | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/slither/solc_parsing/slither_compilation_unit_solc.py b/slither/solc_parsing/slither_compilation_unit_solc.py index aa4f88890..f4258cd41 100644 --- a/slither/solc_parsing/slither_compilation_unit_solc.py +++ b/slither/solc_parsing/slither_compilation_unit_solc.py @@ -742,19 +742,46 @@ Please rename it, this name is reserved for Slither's internals""" self._underlying_contract_to_parser[contract].log_incorrect_parsing( f"Impossible to generate IR for {contract.name}.{func.name} ({func.source_mapping}):\n {e}" ) - except AssertionError as e: + except Exception as e: func_expressions = "\n".join([f"\t{ex}" for ex in func.expressions]) logger.error( - f"\nFailed to parse {contract.name}.{func.name} ({func.source_mapping}):\n " + f"\nFailed to generate IR for {contract.name}.{func.name}. Please open an issue https://github.com/crytic/slither/issues.\n{contract.name}.{func.name} ({func.source_mapping}):\n " f"{func_expressions}" ) raise e - - contract.convert_expression_to_slithir_ssa() + try: + contract.convert_expression_to_slithir_ssa() + except Exception as e: + logger.error( + f"\nFailed to convert IR to SSA for {contract.name} contract. Please open an issue https://github.com/crytic/slither/issues.\n " + ) + raise e for func in self._compilation_unit.functions_top_level: - func.generate_slithir_and_analyze() - func.generate_slithir_ssa({}) + try: + func.generate_slithir_and_analyze() + except AttributeError as e: + logger.error( + f"Impossible to generate IR for top level function {func.name} ({func.source_mapping}):\n {e}" + ) + except Exception as e: + func_expressions = "\n".join([f"\t{ex}" for ex in func.expressions]) + logger.error( + f"\nFailed to generate IR for top level function {func.name}. Please open an issue https://github.com/crytic/slither/issues.\n{func.name} ({func.source_mapping}):\n " + f"{func_expressions}" + ) + raise e + + try: + func.generate_slithir_ssa({}) + except Exception as e: + func_expressions = "\n".join([f"\t{ex}" for ex in func.expressions]) + logger.error( + f"\nFailed to convert IR to SSA for top level function {func.name}. Please open an issue https://github.com/crytic/slither/issues.\n{func.name} ({func.source_mapping}):\n " + f"{func_expressions}" + ) + raise e + self._compilation_unit.propagate_function_calls() for contract in self._compilation_unit.contracts: contract.fix_phi() From 10641851e738d7f3f27b0a851612c0b24a7efb9c Mon Sep 17 00:00:00 2001 From: webthethird Date: Wed, 10 May 2023 11:53:06 -0500 Subject: [PATCH 145/220] Update test --- tests/unit/utils/test_upgradeability_util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/utils/test_upgradeability_util.py b/tests/unit/utils/test_upgradeability_util.py index e367a3eed..86ae0d675 100644 --- a/tests/unit/utils/test_upgradeability_util.py +++ b/tests/unit/utils/test_upgradeability_util.py @@ -30,7 +30,7 @@ def test_upgrades_compare() -> None: modified_funcs, tainted_funcs, tainted_contracts, - ) = compare(v1, v2) + ) = compare(v1, v2, include_external=True) assert len(missing_vars) == 0 assert new_vars == [v2.get_state_variable_from_name("stateC")] assert tainted_vars == [ From af7279a6bf5bba57d8a48cdbc78d79551adf6f18 Mon Sep 17 00:00:00 2001 From: webthethird Date: Wed, 10 May 2023 11:54:09 -0500 Subject: [PATCH 146/220] Update docstring --- slither/utils/upgradeability.py | 1 + 1 file changed, 1 insertion(+) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index f90dc1376..37c5301e2 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -107,6 +107,7 @@ def compare( Args: v1: Original version of (upgradeable) contract v2: Updated version of (upgradeable) contract + include_external: Optional flag to enable cross-contract external taint analysis Returns: missing-vars-in-v2: list[Variable], From 07426ef7a9e4c5030c8207a88b16074f0e40eed2 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 11 May 2023 11:47:04 -0500 Subject: [PATCH 147/220] improve reentrancy events documentation --- .../detectors/reentrancy/reentrancy_events.py | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/slither/detectors/reentrancy/reentrancy_events.py b/slither/detectors/reentrancy/reentrancy_events.py index 2d29442f7..ac9c049c4 100644 --- a/slither/detectors/reentrancy/reentrancy_events.py +++ b/slither/detectors/reentrancy/reentrancy_events.py @@ -29,24 +29,45 @@ class ReentrancyEvent(Reentrancy): # region wiki_description WIKI_DESCRIPTION = """ -Detection of the [reentrancy bug](https://github.com/trailofbits/not-so-smart-contracts/tree/master/reentrancy). -Only report reentrancies leading to out-of-order events.""" +Detects [reentrancies](https://github.com/trailofbits/not-so-smart-contracts/tree/master/reentrancy) that allow manipulation of the order or value of events.""" # endregion wiki_description # region wiki_exploit_scenario WIKI_EXPLOIT_SCENARIO = """ ```solidity - function bug(Called d){ +contract ReentrantContract { + function f() external { + if (BugReentrancyEvents(msg.sender).counter() == 1) { + BugReentrancyEvents(msg.sender).count(this); + } + } +} +contract Counter { + uint public counter; + event Counter(uint); + +} +contract BugReentrancyEvents is Counter { + function count(ReentrantContract d) external { counter += 1; d.f(); emit Counter(counter); } +} +contract NoReentrancyEvents is Counter { + function count(ReentrantContract d) external { + counter += 1; + emit Counter(counter); + d.f(); + } +} ``` -If `d.()` re-enters, the `Counter` events will be shown in an incorrect order, which might lead to issues for third parties.""" +If the external call `d.f()` re-enters `BugReentrancyEvents`, the `Counter` events will be incorrect (`Counter(2)`, `Counter(2)`) whereas `NoReentrancyEvents` will correctly emit +(`Counter(1)`, `Counter(2)`). This may cause issues for offchain components that rely on the values of events e.g. checking for the amount deposited to a bridge.""" # endregion wiki_exploit_scenario - WIKI_RECOMMENDATION = "Apply the [`check-effects-interactions` pattern](http://solidity.readthedocs.io/en/v0.4.21/security-considerations.html#re-entrancy)." + WIKI_RECOMMENDATION = "Apply the [`check-effects-interactions` pattern](https://docs.soliditylang.org/en/latest/security-considerations.html#re-entrancy)." STANDARD_JSON = False From 8408788e8e3ce74c9d34d7bf94bc200067b33f27 Mon Sep 17 00:00:00 2001 From: devtooligan Date: Thu, 11 May 2023 10:59:09 -0700 Subject: [PATCH 148/220] chore: add to scripts/ci_test_printers.sh --- scripts/ci_test_printers.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/ci_test_printers.sh b/scripts/ci_test_printers.sh index 61994b337..d13932b81 100755 --- a/scripts/ci_test_printers.sh +++ b/scripts/ci_test_printers.sh @@ -1,11 +1,11 @@ #!/usr/bin/env bash -### Test printer +### Test printer cd tests/e2e/solc_parsing/test_data/compile/ || exit # Do not test the evm printer,as it needs a refactoring -ALL_PRINTERS="cfg,constructor-calls,contract-summary,data-dependency,echidna,function-id,function-summary,modifiers,call-graph,human-summary,inheritance,inheritance-graph,slithir,slithir-ssa,vars-and-auth,require,variable-order,declaration" +ALL_PRINTERS="cfg,constructor-calls,contract-summary,data-dependency,echidna,function-id,function-summary,modifiers,call-graph,human-summary,inheritance,inheritance-graph,loc,slithir,slithir-ssa,vars-and-auth,require,variable-order,declaration" # Only test 0.5.17 to limit test time for file in *0.5.17-compact.zip; do From d4b041a3992c0263f1c036c4b90386de4c1bad7a Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Thu, 11 May 2023 15:39:51 -0400 Subject: [PATCH 149/220] fix incorrect files in test error message --- scripts/ci_test_interface.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/ci_test_interface.sh b/scripts/ci_test_interface.sh index 05859eb47..42b2eea9a 100644 --- a/scripts/ci_test_interface.sh +++ b/scripts/ci_test_interface.sh @@ -12,7 +12,7 @@ DIFF=$(diff crytic-export/interfaces/IWETH9.sol "$DIR_TESTS/test_1.sol") if [ "$DIFF" != "" ] then echo "slither-interface test 1 failed" - cat test_1.sol + cat "crytic-export/interfaces/IWETH9.sol" echo "" cat "$DIR_TESTS/test_1.sol" exit 255 @@ -25,7 +25,7 @@ DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_2.sol") if [ "$DIFF" != "" ] then echo "slither-interface test 2 failed" - cat test_2.sol + cat "crytic-export/interfaces/IMock.sol" echo "" cat "$DIR_TESTS/test_2.sol" exit 255 @@ -38,7 +38,7 @@ DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_3.sol") if [ "$DIFF" != "" ] then echo "slither-interface test 3 failed" - cat test_3.sol + cat "crytic-export/interfaces/IMock.sol" echo "" cat "$DIR_TESTS/test_3.sol" exit 255 @@ -50,7 +50,7 @@ DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_4.sol") if [ "$DIFF" != "" ] then echo "slither-interface test 4 failed" - cat test_4.sol + cat "crytic-export/interfaces/IMock.sol" echo "" cat "$DIR_TESTS/test_4.sol" exit 255 @@ -62,7 +62,7 @@ DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_5.sol") if [ "$DIFF" != "" ] then echo "slither-interface test 5 failed" - cat test_5.sol + cat "crytic-export/interfaces/IMock.sol" echo "" cat "$DIR_TESTS/test_5.sol" exit 255 @@ -74,7 +74,7 @@ DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_6.sol") if [ "$DIFF" != "" ] then echo "slither-interface test 6 failed" - cat test_6.sol + cat "crytic-export/interfaces/IMock.sol" echo "" cat "$DIR_TESTS/test_6.sol" exit 255 @@ -86,7 +86,7 @@ DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_7.sol") if [ "$DIFF" != "" ] then echo "slither-interface test 7 failed" - cat test_7.sol + cat "crytic-export/interfaces/IMock.sol" echo "" cat "$DIR_TESTS/test_7.sol" exit 255 From 6fbb366fe7dbfc7e503cdee11b7468564c6977ba Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Thu, 11 May 2023 16:20:27 -0400 Subject: [PATCH 150/220] add --strip-trailing-cr to diff --- scripts/ci_test_interface.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/ci_test_interface.sh b/scripts/ci_test_interface.sh index 42b2eea9a..de0defee3 100644 --- a/scripts/ci_test_interface.sh +++ b/scripts/ci_test_interface.sh @@ -8,7 +8,7 @@ solc-select use 0.8.19 --always-install #Test 1 - Etherscan target slither-interface WETH9 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 -DIFF=$(diff crytic-export/interfaces/IWETH9.sol "$DIR_TESTS/test_1.sol") +DIFF=$(diff crytic-export/interfaces/IWETH9.sol "$DIR_TESTS/test_1.sol" --strip-trailing-cr) if [ "$DIFF" != "" ] then echo "slither-interface test 1 failed" @@ -21,7 +21,7 @@ fi #Test 2 - Local file target slither-interface Mock tests/tools/interface/ContractMock.sol -DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_2.sol") +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_2.sol" --strip-trailing-cr) if [ "$DIFF" != "" ] then echo "slither-interface test 2 failed" @@ -34,7 +34,7 @@ fi #Test 3 - unroll structs slither-interface Mock tests/tools/interface/ContractMock.sol --unroll-structs -DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_3.sol") +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_3.sol" --strip-trailing-cr) if [ "$DIFF" != "" ] then echo "slither-interface test 3 failed" @@ -46,7 +46,7 @@ fi #Test 4 - exclude structs slither-interface Mock tests/tools/interface/ContractMock.sol --exclude-structs -DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_4.sol") +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_4.sol" --strip-trailing-cr) if [ "$DIFF" != "" ] then echo "slither-interface test 4 failed" @@ -58,7 +58,7 @@ fi #Test 5 - exclude errors slither-interface Mock tests/tools/interface/ContractMock.sol --exclude-errors -DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_5.sol") +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_5.sol" --strip-trailing-cr) if [ "$DIFF" != "" ] then echo "slither-interface test 5 failed" @@ -70,7 +70,7 @@ fi #Test 6 - exclude enums slither-interface Mock tests/tools/interface/ContractMock.sol --exclude-enums -DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_6.sol") +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_6.sol" --strip-trailing-cr) if [ "$DIFF" != "" ] then echo "slither-interface test 6 failed" @@ -82,7 +82,7 @@ fi #Test 7 - exclude events slither-interface Mock tests/tools/interface/ContractMock.sol --exclude-events -DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_7.sol") +DIFF=$(diff crytic-export/interfaces/IMock.sol "$DIR_TESTS/test_7.sol" --strip-trailing-cr) if [ "$DIFF" != "" ] then echo "slither-interface test 7 failed" From e9add943fedd10ffca70e4f75119c0d41f55799a Mon Sep 17 00:00:00 2001 From: Simone Date: Thu, 11 May 2023 23:30:51 +0200 Subject: [PATCH 151/220] Fix pop IR --- slither/slithir/convert.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/slither/slithir/convert.py b/slither/slithir/convert.py index 3cfddf5e6..8bc9b3247 100644 --- a/slither/slithir/convert.py +++ b/slither/slithir/convert.py @@ -1363,7 +1363,14 @@ def convert_to_pop(ir: HighLevelCall, node: "Node") -> List[Operation]: # TODO the following is equivalent to length.points_to = arr # Should it be removed? ir_length.lvalue.points_to = arr - element_to_delete.set_type(ElementaryType("uint256")) + # Note bytes is an ElementaryType not ArrayType so in that case we use ir.destination.type + # while in other cases such as uint256[] (ArrayType) we use ir.destination.type.type + # in this way we will have the type always set to the corresponding ElementaryType + element_to_delete.set_type( + ir.destination.type + if isinstance(ir.destination.type, ElementaryType) + else ir.destination.type.type + ) ir_assign_element_to_delete.set_expression(ir.expression) ir_assign_element_to_delete.set_node(ir.node) ret.append(ir_assign_element_to_delete) From ac2142f3cd46770cdab2a0f3244101b041c2f6c0 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Sat, 13 May 2023 15:30:22 -0500 Subject: [PATCH 152/220] include lvalue type in operations' __str__ methods --- slither/slithir/operations/assignment.py | 2 +- slither/slithir/operations/new_array.py | 5 ++++- slither/slithir/operations/new_contract.py | 3 ++- slither/slithir/operations/new_structure.py | 3 ++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/slither/slithir/operations/assignment.py b/slither/slithir/operations/assignment.py index 5bedf2c85..1f29ceb7b 100644 --- a/slither/slithir/operations/assignment.py +++ b/slither/slithir/operations/assignment.py @@ -50,5 +50,5 @@ class Assignment(OperationWithLValue): points = lvalue.points_to while isinstance(points, ReferenceVariable): points = points.points_to - return f"{lvalue} (->{points}) := {self.rvalue}({self.rvalue.type})" + return f"{lvalue}({lvalue.type}) (->{points}) := {self.rvalue}({self.rvalue.type})" return f"{lvalue}({lvalue.type}) := {self.rvalue}({self.rvalue.type})" diff --git a/slither/slithir/operations/new_array.py b/slither/slithir/operations/new_array.py index 8dad8532f..34e8f99f7 100644 --- a/slither/slithir/operations/new_array.py +++ b/slither/slithir/operations/new_array.py @@ -38,4 +38,7 @@ class NewArray(Call, OperationWithLValue): def __str__(self): args = [str(a) for a in self.arguments] - return f"{self.lvalue} = new {self.array_type}{'[]' * self.depth}({','.join(args)})" + lvalue = self.lvalue + return ( + f"{lvalue}({lvalue.type}) = new {self.array_type}{'[]' * self.depth}({','.join(args)})" + ) diff --git a/slither/slithir/operations/new_contract.py b/slither/slithir/operations/new_contract.py index 10fa91efd..518a097cb 100644 --- a/slither/slithir/operations/new_contract.py +++ b/slither/slithir/operations/new_contract.py @@ -104,4 +104,5 @@ class NewContract(Call, OperationWithLValue): # pylint: disable=too-many-instan if self.call_salt: options += f"salt:{self.call_salt} " args = [str(a) for a in self.arguments] - return f"{self.lvalue} = new {self.contract_name}({','.join(args)}) {options}" + lvalue = self.lvalue + return f"{lvalue}({lvalue.type}) = new {self.contract_name}({','.join(args)}) {options}" diff --git a/slither/slithir/operations/new_structure.py b/slither/slithir/operations/new_structure.py index f24b3bccd..c50cd6a3e 100644 --- a/slither/slithir/operations/new_structure.py +++ b/slither/slithir/operations/new_structure.py @@ -39,4 +39,5 @@ class NewStructure(Call, OperationWithLValue): def __str__(self): args = [str(a) for a in self.arguments] - return f"{self.lvalue} = new {self.structure_name}({','.join(args)})" + lvalue = self.lvalue + return f"{lvalue}({lvalue.type}) = new {self.structure_name}({','.join(args)})" From 58e01ea218627719e3e2bd60df4abd5bd7ce6fee Mon Sep 17 00:00:00 2001 From: Simone Date: Sun, 14 May 2023 10:52:07 +0200 Subject: [PATCH 153/220] Don't report variable in loop header --- .../uninitialized_local_variables.py | 10 +++++++++- .../0.4.25/uninitialized_local_variable.sol | 6 ++++++ ...ninitialized_local_variable.sol-0.4.25.zip | Bin 1807 -> 2247 bytes .../0.5.16/uninitialized_local_variable.sol | 6 ++++++ ...ninitialized_local_variable.sol-0.5.16.zip | Bin 1802 -> 2237 bytes .../0.6.11/uninitialized_local_variable.sol | 6 ++++++ ...ninitialized_local_variable.sol-0.6.11.zip | Bin 1824 -> 2269 bytes .../0.7.6/uninitialized_local_variable.sol | 6 ++++++ ...uninitialized_local_variable.sol-0.7.6.zip | Bin 1762 -> 2202 bytes 9 files changed, 33 insertions(+), 1 deletion(-) diff --git a/slither/detectors/variables/uninitialized_local_variables.py b/slither/detectors/variables/uninitialized_local_variables.py index 759691d50..3f7eee4d6 100644 --- a/slither/detectors/variables/uninitialized_local_variables.py +++ b/slither/detectors/variables/uninitialized_local_variables.py @@ -6,7 +6,7 @@ """ from typing import List -from slither.core.cfg.node import Node +from slither.core.cfg.node import Node, NodeType from slither.core.declarations.function_contract import FunctionContract from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification from slither.utils.output import Output @@ -64,6 +64,14 @@ Bob calls `transfer`. As a result, all Ether is sent to the address `0x0` and is self.visited_all_paths[node] = list(set(self.visited_all_paths[node] + fathers_context)) + # Remove a local variable declared in a for loop header + if ( + node.type == NodeType.VARIABLE + and len(node.sons) == 1 # Should always be true for a node that has a STARTLOOP son + and node.sons[0].type == NodeType.STARTLOOP + ): + fathers_context.remove(node.variable_declaration) + if self.key in node.context: fathers_context += node.context[self.key] diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol b/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol index d28eef957..82a3ab124 100644 --- a/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol +++ b/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol @@ -6,4 +6,10 @@ contract Uninitialized{ return uint_not_init + uint_init; } + function noreportfor() public { + for(uint i; i < 6; i++) { + uint a = i; + } + } + } diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol-0.4.25.zip b/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol-0.4.25.zip index 60ae4138c0cbb53a9d2b212e0929f5778c39e3ab..2c4ccdf1739484c8c89730b7f54efaf23f024e87 100644 GIT binary patch delta 2091 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 delta 1647 zcmV-#29Wu^5sD5QP)h>@KL7#%4gfoicUIs~n?XPZ000>s001|}t(aS6;oO)2cgKrt@CvFD zq-twoh9To$3D5TK9zaTg)Ydm2R^s1<$U`osaho%pasXN4*8boCo^6ObNyeP1jvhm$^}F=__{;0hp-BOL@WJy!?8)3?Lw!|DR~#NnYCT1ybeR7Pe-c z>b_^!Q*eqK_VeycrZ!*J?SSq2o1(_aHpc6yO1vt&ZX@`?X52L&m}h?uUDkL$<=B#2 z%6l~VP8r$1?cnQZGW=0q%2Mn*9!53Uyh8tjbrS1NW(gOng!Rfcvv+FgZ*5S~@J@$> zK-W^m1WQD+5hRE41r)HopU-VmjTS|1@y0@!f0BF3QbZ@D9dSWx>)^>Ub2wenLG+Z5 zqXyR(Jw5=JDGunxxXOPzZRzAJsY>eQ+E-)g8o7v zm~QTXv{D%ua*2P|z;2sp`+$%S>82Q9BwJ9xVcOE8O~U0oEM{Vw&`T49Q1SWEcd(i6 zK~)4gik6_c7CO9)!*)KyG~rRGq*4{L0B(}1Sj)=-vu$)*pO_!oanXvG7jH))IGd1b$bL$C;S z9u&GbOUbdIYk*i(xZa_ja4JSjPw+MB;rIEo@QT?7N153c%dN#%S%bJION-@;i%Gp+ z|DWE4aj5U*DAa1a<+ns#yFq$rw37~Sb34psT1wkxiMeO9et%iVPfP@w7TTAU@X*?z zbmXJk&2@h;>dy|fY&uUaEZ}OZ;sJjJ3(nte4Chx7zU_6JkVrHRUw-($f0VUZ!e3eD zzz!ft<;6emNU~K+F{T@MjggV9QUa>Qujdf~^pbOcK_nI0JZ)&)Whn_$D_3}>PL^#D zo_yN>4CEA5W#JCVAc$+?FU$Y>S@Yw}pE(>sCJujhncj;Z)k?BwXkIM|Vo2 zwjCVOoXs)LcM3RaSs(*RYNi^04Zq48nlv{(t{YesnMNDvE_TZN1qjd{g#+6=sEPWy z_$!I|qtE|nBfFi%s8@{m*4#apI_|sqTXox{#^>` zk-dM{sKlB+YF~oe@VFK(ZqGWT(%*WOu_tP*FJe$%cclZ#Js8HB@2^2c;z|O-%5DP9 zDr%xU@(V>5IR@kE9hfeBV^8fWFG$vs+*l_5MMtVu&RUGHSDr3t{VG1VkILDPCyM^v zk>{nAm?8)sLuI1dh8Ssh-z(uo&zEcsPuG94EllWaNqf`5)EfArt8L5kzK`VgevFvD z-MokSJIiGWKT!i)kYQwyu9(E<80agSiomqCH(}Fxb>lC86(4(G!mv0c^qc_V6mp3w z>?ZDaX9Xwjm9I6!_N`!w)LkptBVbEDVtN}xF(}AWiKiP7z5TB3@ym?^MqHsDT*ZHC z;8@pnM@$BjB&}dmM|x7UYIIF~7I$GSAp(p!2NEI0UR(M#)X-F>%ZK+IatP2Bm648V z&;dR#mcK|KbDUie$|;PaO+L^DoBVP-*y)<;0WM3l`@SZz{;B9abh^k zFNLiwe&-Kh?WW{8``@Q!GUK_09&0=jCivHLjhK{?*APyJ8EzsVUEM17bHFzrQ@R#r t{{Xz-08mQ-0zU&k00ICG06UF$R^U*ZK|lro02v*VUkF$Rk_G?(003J`BAEaH diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol b/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol index d28eef957..82a3ab124 100644 --- a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol +++ b/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol @@ -6,4 +6,10 @@ contract Uninitialized{ return uint_not_init + uint_init; } + function noreportfor() public { + for(uint i; i < 6; i++) { + uint a = i; + } + } + } diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol-0.6.11.zip b/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol-0.6.11.zip index ca7ea0eb308fe7b52d4395dd5171d8bdbf5d44f2..793b30f4a11dff2246e75b96719158fa033a2831 100644 GIT binary patch delta 2111 zcmV-F2*CHC4&4zLP)h>@KL7#%4gl0uu2#Z)dpQ#b000m#kr-ru^+P_6+Z$mK{=)<4#k(GbXB?s{~H=a zs3iZSL1y6a%c)g=c8>~Gzo559b-?F@wye`NK)+y_mW4~=J%l}F&*_)3Aiw|>(5`1O z>!tfUafTv3v9)MXA`_1eomcR~x^ex9+GuQ`S4J!hJWpLKtoZY11OZt@C8JkKt=}rt1T|(#7>cexL%|Uy^f67DBq$gXC|`jX6SjEm1Kc>WxSt-p z!`n$>=wz|gH+_BJHCBPqpTP4eTN7~FsRG&>M!B|m5CVFu!#IK=J&=mhmfVhPHa>L^ z7s|$sUY;#~wQ9-Y`Tw3f848LG$8Htk!58_pFQ#=4aDiBG$G&X10UsrdpyyX-(%9&z zEZX8dTw`E#am@S0~bIX1#v;Sg|yN6FRV63p;Hpb&rhZF zTD7Dk7T7Ex$v!MUVqKSn_S+W;!yC22^i2?M+sRRHiNnWFG1>j}-Opa(o^v0e=?Y2`@Cvdz) zgB?~SKU;s6qwf==z{3es_*;-CHP}oXKBtGyQ2=fy884l-vK{Q`3~fLvbL$4 zO{^5`VwD-Ad;uM@gF78DMZ_V=X8weQLFSXfu@J5B^7ufhr>L%up2y04WRsJ8sDkqtiHY`TS1QYPs{Og zz`Kr|?iBQMGwt6G)*SOfQB$IP!eu&oEF@S=;uq(^qNTVla^VXozgX)5FKeJQhUBO} zmpz_xeM$#Fr^R}vkz6yqjNgNQ*>@}($(;cU>rpg~m1tCV<30lJzi>nB%&3zZ_aLmY zmKkg;1=U|}$}n<3TvVr=iZDji_lqi&@W}ZUsRZ6Zk7D%w&nL}%Wjp#>ZKKSK7QrJA z{0J_92G7^Y*u{&x%)ml;45s0j+hlMOIkTq4mcuIQ3((rh|0WUhhrQ>2`{({q0Pc9G zdeTJlv>#MhQ(HmDKxuE=ubwDECx`NYGZYc$5>^nuMCd<=?_dL?k&z^U%$+M+NDdP% zRpF>y!;_7M!ZoM)tkiFMhy6waLGRn~o2c*mo)#bO?8VA3b`IszvliojfDnIIy3!5gG3pP6ngTmNq*dt?vYRAOFS&CzRbox;$<9f2n;VWze4R|-F^ATAL!!? zcOJ8_TIsB5Gum@4=fN+3&4{DF^r>N#M6}V|0Sm#pAuHI3CI!%V(ktJ+DJ|Ii#&#^vC{txH zyaRX}=zuzTBN)K&SA*_kGhVm|Qg2xy<;wpU(9Pt(vKG{i=x+a!yv18~l!Ls_GMcrM z-hZ0u`F9H6a2dsp)@bsXhq}v*?IQnC2Z-0Naa#bC(Zof6JgL02Rnth8FH=P5T$cM4 z*N6XqUZtc6!r%1_&~?8-H8CmpMAg>M#J;1YoYOC6LBtU+n|fc!Z@j~uMS^;b@3bk pP)h*FLHITHu~01z*e!Uk9dWe5NO0009K1f>7~ delta 1669 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 ZRs(_>BhUu`0F^A0ga%j!A_xEg003c@_^1E? delta 1607 zcmV-N2Dtf}5#kLSP)h>@KL7#%4gfoicUE;nYX2Ap002T9001|}t(aS6;oO)2cgKrt@CvFD zq-twonro_@{&p*CwbB5MY;H;&9AR62-ZWz<@VE4AZ4Qa(U0<$njRn~ymyLt`Xc7Yr zPW;C;9N^_wQV658`?crE5J&a2g{MGF(MSyx_#E^>kW!?o1Q6FJyPm z1ZMR&cXfcTHweG@NUjJ2%n)`xOWk|IzI5u{Tw9D~q22nnKNm9|r>K8&egVk>2h;JI zT2npyo2Ro6mNX&c2+u*bcw2HdQ8*Gnc8rTxPW_eD+U=R%<-2-V?P_(GL(*ZiU5b@4 zEKfrm01iBZ1k}ckgyH)E))5Fjf3^i1Xb> zGXd7wA=Mf~r>fchP|&Nie_Oxw*6f}Z!PwG|R=QQLE9AW1YGWd(g*pr}!&))ti{$^2 zNVy{4J)sTsn%``g+bO$mlb2QibhQLJtY4Pokoor5^_zMQg(H8kM|M}m+^hc_!pxT> zs2R62g)o|hlJ72*sYp?jCpZm`eapu-o+YR7X4;BvQZ6p%JkB7@OIccF!2Q(dAu5jt z#(XDCsqAmuvcbt!8)m%UF)W3R*TQ~eGp#%PInmo?Emw^;q z6t1IH@OQHQ(bK!r8iv=hwVOn`xlWE_V+Z4M)UHEaVdhxRMJCQnMwNsx*9 zw1`WgZ6bfGoBoJpVOBe85ymLKcYYlhzW@UjyR1^-xx%myN*BQ}k~ce3^S9!+B+$yq zH>RUV+MM5VxrBk46l0*)$85C|8u*?FkvO-wBM%vD92uxyuj288k1ofGQ9s#)AYzW! z!T5h-y;74pRnmBp5MN}CX9t2L9j+2Av36@{m4{DkT28j|e}U@R=ERYL{F=ShmxM=> z?ERla+q06O0Po|^-jXFfX(1+A3cgq+8%s8h`E$w`uu}L2(8=at?JGhJ96P{geOTI2 z1P16WkR6sq>smlds2Tz8(lY=1Pr7;IBzu2fe}w24sKLD#@QQq{AVt}o{}H=KZt+9 z+?xVqzK?Ny3vtzTOafoqzCXGI+t**{GDVvmO$07sT-@l;Qv=AdEk@oNbFHhkTrepe z`NCLkxeJrafMpvdBW?lvE50B}1-l^%Nm&p`Ep%&DVa|q(*RM_|u##Crc}ZQv6@)9c zFoVs2zDZa{F^U!c-CK~-P)h* Date: Sun, 14 May 2023 11:08:30 +0200 Subject: [PATCH 154/220] Fix crash when variable is initialized --- .../uninitialized_local_variables.py | 3 ++- .../0.4.25/uninitialized_local_variable.sol | 5 +++++ ...ninitialized_local_variable.sol-0.4.25.zip | Bin 2247 -> 2483 bytes .../0.5.16/uninitialized_local_variable.sol | 5 +++++ ...ninitialized_local_variable.sol-0.5.16.zip | Bin 2237 -> 2469 bytes .../0.6.11/uninitialized_local_variable.sol | 5 +++++ ...ninitialized_local_variable.sol-0.6.11.zip | Bin 2269 -> 2498 bytes .../0.7.6/uninitialized_local_variable.sol | 5 +++++ ...uninitialized_local_variable.sol-0.7.6.zip | Bin 2202 -> 2427 bytes 9 files changed, 22 insertions(+), 1 deletion(-) diff --git a/slither/detectors/variables/uninitialized_local_variables.py b/slither/detectors/variables/uninitialized_local_variables.py index 3f7eee4d6..0aa5579f8 100644 --- a/slither/detectors/variables/uninitialized_local_variables.py +++ b/slither/detectors/variables/uninitialized_local_variables.py @@ -70,7 +70,8 @@ Bob calls `transfer`. As a result, all Ether is sent to the address `0x0` and is and len(node.sons) == 1 # Should always be true for a node that has a STARTLOOP son and node.sons[0].type == NodeType.STARTLOOP ): - fathers_context.remove(node.variable_declaration) + if node.variable_declaration in fathers_context: + fathers_context.remove(node.variable_declaration) if self.key in node.context: fathers_context += node.context[self.key] diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol b/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol index 82a3ab124..37d4650e2 100644 --- a/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol +++ b/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol @@ -10,6 +10,11 @@ contract Uninitialized{ for(uint i; i < 6; i++) { uint a = i; } + + for(uint j = 0; j < 6; j++) { + uint b = j; + } + } } diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol-0.4.25.zip b/tests/e2e/detectors/test_data/uninitialized-local/0.4.25/uninitialized_local_variable.sol-0.4.25.zip index 2c4ccdf1739484c8c89730b7f54efaf23f024e87..29db479d573ecfe96ea1e2af6bbf53df42de1cd5 100644 GIT binary patch delta 2146 zcmV-o2%Y!G5wjB*P)h>@KL7#%4gkqmu2#8J70T%d007B7u^1Quf276Z^!?MWMToTd z`CamzD)0N)uJH+6f~Bd=@*~O)JXVVH43_{Y}$2 zR)k+p*2QsET`iiPTw7b_em3h+#W&ueAn+${ew$Yq3zne(5qOIB@{FNE;s~q~F9JvU zxtIb9nYhSg`+{Y;jGz8O&TX|$WNe-sv(#cJe+O|-V^fAXeZa!J083%85taxTjgvoWUk*d%FzlO=m>-% zEzuzw2U;4hgX(7&LhBzCAaUFwyw^@W;Ql2GxqJyF9O_x4B*C8h^%%+mQg@9|1F2SG z#E&D&BRxa_tNn9V!Ns#q&)RFP@v5)eLhz3CrA8+(e<}7zI_%EDK42bIAJf=PC&pnt z;=$g&0l8!J^C@Vsqao>#^*H?%%xy$`=gen(tK5e!%Q&C=%91@QAG$d7TC8!+@M znRVq}B?SiH9OB>r0hmY)=0k!LR==rr%hD(@FCh`K^=y=VtwTNG{d%`w0)|LXa$ zj#@zzePCImf84VJD~mM4sI^!tbDhHE~M$D0<4-;&k?-uq)>f+=!>KE-u|Aicf(^HBz_f69Te_M~PXapO7)G0FB>S`-T3U|D<& z_hl_$r0wm3xKYD}VLB8E<`cf7V-XzR5noUBpoKU@=0jqbUFNqQ@k?Nk3h6oX7LyON zib#-nQR0FO#P<%!jd2+C#!8^e8hL?6mgj4RKV){+f;KLx`}`pHB}2|Z z%MP1^#n4aE6J>|He?|`gsULI?bb~@xHFB+ME`6p9$TQGozQ;@uf!$;cKxYG(+IgJy zPgYs}+%Bb>m~<|s+yyw+99W};_)U*ge^BrMfg~*|$tbuzB;hGl6B%c>mum}HDmTeJ zC)N$P{iITKYeWhJl;NeX?8MDJs-PWX`r%^Bux)V$wqTx`QBCzySS-uB$Uj_f3z;XE zL;*1C6*3wLFhoI}3>eB*YdwI8w$!EPNi{1B=hLp;%px+`x<~8JUU)=gX!(*gf1lmX zB)f`4kc*#EReKdRWqWN`GI~S#GNQ{sB*%FIR?0Ms;@J3q8ng%0tQ=rXjPe-rdyWk8 zy!xeISh&5kaRV%UdVfpJ7-=N)bJtJX9~^5di$g8x@nrDeD}4XE6)*X0fR_CtVY@=J zzb<6#n38omvZNfr3;DiXDs;O;e+xJTDjQ2KdWI`X9g;!KE0=Sp1ASYL$E>QqP3WOw zAq40LxN{BW(Jxk!QTeZ%3)Ht#v{@oVlbJiM@C7^eK4iULF$I!;lRgt6^L(wSkJ)9q z%dcm!j+1*)3=*+-kc4eaww{ANiTbE7^S-eEa619cbTKSY3zv%bg>r6rf92HmQZr(| zMq_EcDB*oV{s2oGS$ciCc+P`{h%~_^s}r1CSdgIwQ!#>bnP1Wh2S5^2$3HTS*+Es7 z`6(weUuyMt-j7y_F&llkLTKcwh>^xV7f3OvG)+U_5g<=GB0VfuOQzObvmfpTiNl%c zc2juB&4+wqDazqw?cXFie^bo?kSRKXK1(Fti01*0AUtFdg#$kZU7{#jI_{$NK=d$6 z>?%E|;2+dNyiFfzjjg7>Ms5y?jY@6PR{#jr(ICnU9w;2;w_K|8U?@_@$HAGK<)U=|5X*^`c7xWDEmOM!e`z}lsh)cpmy2PE zdpcE^e=QPkl`iZq3uMTSll4)R7szK%4dpa*HA&q+hWqj1>9<=9Wc=1I(-a>?RNfnk zlZn(|q%-#PcTRWqoae2MHDZ7gp1)z7us{!S%Yf9E7ru6FrC9r+Q(DvFI_+yV;NZ1?DaQ+m|%^j7KlI3F%@XIH9R&Z@_A!rVOwK>e@%2|&h@2@{kJoAi@H77aYij;$UWL5GZ?yu%ia>ZbSG z^)%RZN^Oj(H3<6^cFPpUc9mZAUZPnD&C`7E`)v9D`;@?aP)h*<{901I0R#{d8T delta 1908 zcmV-)2aEW#6UPx4P)h>@KL7#%4gk|tu2$N-BO3h&0015@u^1Quf2-z?+G__*1+Cx_ zT;0Bomc?G|P)g3astk%p>=GF*j}^120N$9Pd|+hstb=K!fEPoAlM3PJ=~qPm>b3P% z4k%VlDFBA6BYoqH?*8n@>i|)}^MjmY>m1QB-v&A-IWk;TyFoiaI$C0}G|-zA-h(5= zot7Zkx z^8)r~#w4!{Y}(jobA>0n_L(8MxP;LeP4R3#7Q+>D`w4BNe|mKo%qLpV`e6_fGrDFk zvYmuwMyZIu-LdcKpMM_OYU5Ix@@4+vSEVznRG9OuLI@GGeKtY#B1CA~+~m$Q zYNxR|x?lc@f7T>~%LVusjJlC1S+37-9azzdVr_evu@}P`T36*GMnWG*i5K3)>}EBC zFe;L*7(w4&6(|C20|zjP zDGWYAzeFY_3k!_;sLYs+*fUnjeF{co|3DIQQdk603m!4uekNWMH+^-TWQh#&aBd;3 zR%vW=Mla=BKDcM`PT!>6ZSL^iEn!iSuFW3OJ-2d@P>KbVRgtPSa!di{S8Qy#yyaFd zd&lo4e?ts*_y+T%If;WA??jh2#ywgtngL|Y41|=m>vc8K3aIL|Iw-?FW4GeUkbk)ybB#> z*ZEeQVkkNm4gw(J6`{Av4KYy~9|NP-`2i9lf3+Q?AU?eeje;spY0}KgScyFyJ7)f0TFn9hXkKR{$Kndq^o1mg%pSqf})re-Dku*DCp~`bN2iZ6*o6Aq?SH`0P=Cwl6&f zA-+7+5{{1bA1kcpq_)pg`z(8uec4CEWK;t4f%kW0TCxhS_v*)8KiySDA9OTMidvOq zea#=8Z(!4km9k;#Jy+#7!wcmoAzP(z%0AxmY_TI6q=JR@qGUCMBVhxVvSByVe=6c# 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 delta 1898 zcmV-w2bK7x6TJ}_P)h>@KL7#%4gl0uu2zIVHe2%t001&Bu^1Quf2-zh1=CKTW7;6u zg11fe_kIhY|IWYsm}AM-KNJ!yAVoNJd_Ow zTuTH$>7J<=9&Y9Oe-P3lWYFI-t}@UhVUFgdwK;%cuGaakK0OyQr~{mQW^&T}#cvna zG1x3QFOkOVhJ;t;X^^>P@F(F~5=S@4IF=*^w=z6p&NWmad;9DsZF>8*G(GT`y$XN0 zREJ*N%Tn~hG|;-tt^OR!+#Ct%$i4NKu=4Z@4Ou3m=O9b-f5d%)wizl667_U3jNUKJ z6I)4ds2sYn_zS@l<{HxTUJSA*l=j{^?1t(wmmGb?<({r8Z>bl(%c?Pr)Fs;Iq%DKx zm=(|Y4}G2A7Xw@fwZtc}T1bVh`@Y_#C)4>xo%3D8H$NqQ@IXRoNIaskc>@2S>UvqY^-90e$#| zKC<1MzC5tU!^XZJr|5aC{o9VsG1~;i2SL>>R)G+f7)BGzB09LMIrPsHP;XtqQbsOOo)EXf*R`>44N&2n#(n2WIxx~Qt}PlXdhAF zVv3d^=m7dS=Z>^!ApCg%AV5(&dst!<#?Eg;+=dL>dDO$({ie(*W*Skf5s~8}`KkAY zbv^5_Q#g2?)%NfRSJDv2J{^OaF)Wg@*spIDf4=Xyt@X7Eg}Aei0bI=>Iq|@o{Y>!2 zxB?al^hBc%x1`XGU0zAis#qqR4?2KTI+`oTNc!Qb#4rW(lXWCr>M`jW60sdF1zKK8 zCktAtIk&sT4s-MG7|K#9_Cm0WJTz!WCNUFtTk@)R(aak13{LoziFVpOM6u-ZD}f042u)1xSdM#TTbhk?tQHGUjEbxt&iI0+Od z|Dnop(si9&iDG4g_)mk4*1{hJOXw zVl;3Kn8GN}+oRaZlr3 ze40D=)9xS|S3Qf^qc32}N|*|dTC3~c{=&-??g>#`CX%>g56KiIJYv)Bkda|%R@Nx= zs$j0Z2)1DoS(_eJv|-4`eE=4bP-hfuR2bkI`|eW($T}G|w{ma{zK=VN#u-pS(zPhs zMp4v#oMh=Z(Vz7C%|hnbn$Q>!%ML z(+*%U?VFTF5=@4S=O?TLC@J3R2lq%-f}bux9RN;qL=K4BWpJ%HA~`v5v{-Hp9Rj7z z8c1_&i-g3g@`RpUJ#kTB6Ke}Cq$p2m-jRx{-L&NwZ1@9%ZZ$I#9X2ojhBB;hP)h*< kKLbAi0ssyG)K#ulgg`c1^9KL`GA@%x30MY22mk;80NO;2n*aa+ diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol b/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol index 82a3ab124..37d4650e2 100644 --- a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol +++ b/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol @@ -10,6 +10,11 @@ contract Uninitialized{ for(uint i; i < 6; i++) { uint a = i; } + + for(uint j = 0; j < 6; j++) { + uint b = j; + } + } } diff --git a/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol-0.6.11.zip b/tests/e2e/detectors/test_data/uninitialized-local/0.6.11/uninitialized_local_variable.sol-0.6.11.zip index 793b30f4a11dff2246e75b96719158fa033a2831..d1ac3a5ab82f558461f3ccb8da893ed552b049f1 100644 GIT binary patch delta 2167 zcmV--2#ELH5yBH2P)h>@KL7#%4gkqmu2wz3swwyg000?2001?HKJ|zj z_4N>dj5XS>u1yYC)2j6Nd~uh}MlOZYi{pJ`K-5?+zX=F1tg1Fg4^|%Qu~OOY91w{p zACnI`NQs43^UhppSV*P~QCS=H(qhU4r`bsJtrxcS&+6{l}koC{{nAP(n7*sy@wp;D%0Un(Vq_aHCJ)S&&6g zTl~nh8m9k5d94ljUmrs}{$?YOfKb(MQ9-Wh*OBi0>3F-WZB;vWrn7_iw& zhW|y2z|qeXlK3zn$~1q#h;O8RP9i#r;BtszU>6_d6K!I5BgWpGQh7DPWWzuyXKTwe zQH`2w;DMhb<1E7g(AlAD)G^3JxTC!O+59RG^S!8L@JoFoUaIvXh@C}>`VDfKnbAg= zzU;ZloL_1$d=K~$arEn+yr}f+1YL|=(VnG&b&^dSFp^PN7s!9vRZiS|<||w}=cafV ztR33Sx~F(w712mL*(c*T56tK^)gdvX^J-FLOFPC9EnJ=jdE(=Q4Y!RE5H$Vl+@OlA z-@!bp8MjW5%l_mVApG-v^Kj@P7S-oHbMH85!JnNC5GujrVa~w-Xj;L)YFA7z4}YeB zf!CRU!ADGAm;!$|@6}8_41+7WV6*?$@S46XOdw<>TBHD%ucgN+=yMfT!d;kW4xljc z$BL}WChwMsgAg;+7r=2xDR&m>iZ%@QSk^@$4#R&Gzxfve{#;FU%3Y718($@v zOX$k`0nFJu1AOjNF;i?W$Ip|y6by~ksU$DX^0A}Gck(AML1ElPCr7}}S zB4JszpKG8%AWc|Y3Xvzpt{h$iJL-8{xo`J-!n{M3CANDp#5DY$@od(zGrs`@%W6BZ zZvaC6gU%L!F!Wug|(<0dI0+nH;=AgxZ~uS;rFHBEQdO zOqFVO@^0?4X{<=}N<{q5kRE1K_KKX$(^2;Z@=N3i#3?-X+KarU9Sk7K$f4Dq!7gRj z&PIO}a%Z2e)$Px1G<4>Xy+vPI<|y-IZw;%|fM>EIxohzZ|N5qL+(^SB9$w4-k6Y%e znqu7bn`-KDS(kJZ4p$iIBQr(>&VBsfwwA@w!gAc*tu=mGbe9@D^{&c&A_^g1RDi8D z*XsrK(SMWcKYAC}rBy0#RQ6?8Y^cGzwtasZ4gQ9pOhctk8)Dy>2CD9#L|OyuG;TrH zSWt&?JwSR=Ur^&!>}>X2Kwcxt|D3WNSkrz2wH`J9Ro}w1=g|_)yvXN5zK7^{`7P!t ztmQMoj6`0hv;XpRT#!Xusn|UHK4Ue>Kyb5>(I~OHs5mV8T}^`W zb~f$>aAbMXS~Dvu%^q3CdYs31b5|NpFc7K`DB_poq>(EpQtJKE&2H% zBC8OKz*W>y>v*22mqnbHF9#VR|5fT>$uU2v9GF|87q*+A>x6nD=8Rgqd#it&f7_0^ z!o&VZr_p5gW({P7Fzc3Fv%MV8*yPR4BLaXD)PmI*KaYPgM-KgN5~#D5g;9ZD(&sPv6jkJ#&Vq#y<8*~I9K$$7 zDDzc}6nl1oeky!hj|b%rIQ_7pYq5Y85bDQ}A!vn9RYSgI3Ep1`#9D-vchBx;2)uSu zXZnvgp4TFC+RPT9N~h`#DCdNUboSN!;~4O#emowV1W?z$+?`oUsd;~ESZC#GL?w!? zN(W)zAxNlqR5q_g<`8DJH@t4Ozx+_|>5;Z!Dk%YKOTob$Az`yq(m5xKiK)*1Z>Oh@ z8{Yk?ZWDj0nQ{RaHURMfwml4%e{aj%W5&42DzElP56v-=ylLIP&6BYeH4`U+6*%M% zuUS|_a+yz|>4xy>7Jx)9Kd&`^DHOs)TF3)(w5=$}^+<+M{daY#cMH7*q`-ze6eH@} t|K_FF-cU;c0zU&k00ICG0LfUcRz1L~DfkEg02w}$e+XCxN(le}001OdGVcHY delta 1930 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 cu2!`Wvn8<{903cxwt^fc4 delta 1870 zcmV-U2eJ735}FYkP)h>@KL7#%4gl0uu2utr8Y9pL005ON001fa+pw88kBrioKDm|ND1P^ZKk>zNEM8=Aq#whCe5D}#aIDPo27VRsA9v4$8~9z+ym zEtjE1U%meuzYQVm83B258dReSp+BPjgaW_#?c`Vc!EKrDJQ11E%iaQokjAWh=8$M~ zPC2YUQlXG2*VcFI>1t?hNdSL`MQaa%KQ>N4^FSW z^dh=VONON|udd5<9J;tETtiH+mO2I!{BFb$ger~9lM>Nb=DUGIxpUauqfKF;$hD8YI1i%uJaH-BllR$S?vH;U z9f~jTW6kr9qCYSo-m6$|xpU)g$37lnrd1G@Ue+rX_;wnQ#L%mu8MpA; z(v%cJgA{HQiEKR9na6*rt_;#2N2p*9?TdcH{}-`8z^T{~G~GNYG0jDd+Tb-^YYvmA zZrm&!X&7(Y4CFv}8HL4hxn7>;)0rgl(#7V+S+N4!fRe%!S}c^R;re{5MsVmeVeCh1 zTw9TxHqA@rt_~M+XJ=Sl>dqr7>!`bH-yZoLewCZZSn3ZkDBagD495ksp+~`g- z6*(%Ial%$>4WP5)flGK7T_gU-0g`yi&d74$MqM1zhjIZU18!R+98^PE9u{m2(6oX^ zK^~0}av=26`Hg=W2-r5eymN6Y7`{pzeK}my99QipFp^*`f2Yqcu_jDy_8f29)%ftu zZ28#tg3)GtPYDY?%d~3)>Q(;vJ z-x{|$890DUi2xYP$7TF2+*73jb*CaKhHbmVNAzsfV=DasDlSZA(8 zuKtl<{z`YgN%QG1kd!bvl`8iR3f||o`f6h`U7>$VtoikWfxxEA!*9L#A}*VG(eV|; zI;gwIRsvqrd35~C$~V&hwV9ekBFx2y3}5ek)Q7TY!r}k%4DkMuuJ9eNU-q=UZVSGk z$}cW|u)2;$SvtUn&pYWhgKrzUE~=*V6NSbMI9j5%L=ve-m9d21(M>yDxTt;)!cW{W zrgncix>{YgeJJ7zkK!n7+iO<{K$Aley|RCDm$)guiGi5slaQ9%;M_5Wzw^05hl3h1>Tbh;99B;g%X5`?B##D z=rT>z&-^I$22?c8jj*m#pct5lRUm8$Oxueo^yS2c=rhXikfm5Y=>uj?*kKkP0#MWz z`v_|!J=9UVKJ&wJ6OZQC(u@-)kcgd5;xcrx7V_@KMK5S#_>eB6qFjl-ST>;{Rt7ve_Kla2Vg4f=}C5}z}?(fy6Tg;jrFg$QEp zem^O9)p^0;ZVAe_-mR)es^xmXnH`<$SzHoXH&`+gN%B$CtnXnf${6(^xv8$PVgx*@*SULydj(h}mT*Y?P@(k^@V;48oqr&5NK$E{=3CfAh0@1mEXI@f zLK+K0smP}Q^WBt>fU3X#Oo1DRP)h* Date: Sun, 14 May 2023 13:38:17 +0200 Subject: [PATCH 155/220] FIx return variables shadowing compact AST --- slither/solc_parsing/declarations/function.py | 1 + 1 file changed, 1 insertion(+) diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index def68a8a3..5a29a9b50 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -774,6 +774,7 @@ class FunctionSolc(CallerContextExpression): "nodeType": "Identifier", "src": v["src"], "name": v["name"], + "referencedDeclaration": v["id"], "typeDescriptions": {"typeString": v["typeDescriptions"]["typeString"]}, } var_identifiers.append(identifier) From 9e4324bab1eb56ebb986a14093994b4bef083a11 Mon Sep 17 00:00:00 2001 From: DarrenChangJR Date: Mon, 15 May 2023 14:54:23 +0800 Subject: [PATCH 156/220] Fix issue #1849: type_str not returning str --- slither/slithir/operations/unary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/slithir/operations/unary.py b/slither/slithir/operations/unary.py index a6529d726..c6493921d 100644 --- a/slither/slithir/operations/unary.py +++ b/slither/slithir/operations/unary.py @@ -58,7 +58,7 @@ class Unary(OperationWithLValue): @property def type_str(self): - return self._type.value + return str(self._type) def __str__(self): return f"{self.lvalue} = {self.type_str} {self.rvalue} " From e7701f1a1782f5593e60a98cc1d9528ab5451af7 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 15 May 2023 08:51:42 -0500 Subject: [PATCH 157/220] make transitive dependencies explicit --- setup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.py b/setup.py index 39ee2b1e0..5c220eaf7 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,9 @@ setup( # "crytic-compile>=0.3.1,<0.4.0", "crytic-compile@git+https://github.com/crytic/crytic-compile.git@windows-rel-path#egg=crytic-compile", "web3>=6.0.0", + "eth-abi>=4.0.0", + "eth-typing>=3.0.0", + "eth-utils>=2.1.0", ], extras_require={ "lint": [ From 0b7257209dd09b1d877ec40870dd55eaf8ab10d1 Mon Sep 17 00:00:00 2001 From: bart1e Date: Mon, 15 May 2023 21:01:04 +0200 Subject: [PATCH 158/220] External calls handled + output printing changed --- .../operations/cache_array_length.py | 16 +++++-- ...yLength_0_8_17_CacheArrayLength_sol__0.txt | 18 ++++--- .../0.8.17/CacheArrayLength.sol | 44 ++++++++++++++++++ .../0.8.17/CacheArrayLength.sol-0.8.17.zip | Bin 7589 -> 8898 bytes 4 files changed, 66 insertions(+), 12 deletions(-) diff --git a/slither/detectors/operations/cache_array_length.py b/slither/detectors/operations/cache_array_length.py index 1f8111bdb..da73d3fd5 100644 --- a/slither/detectors/operations/cache_array_length.py +++ b/slither/detectors/operations/cache_array_length.py @@ -7,7 +7,7 @@ from slither.core.solidity_types import ArrayType from slither.core.source_mapping.source_mapping import SourceMapping from slither.core.variables import StateVariable from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification -from slither.slithir.operations import Length, Delete +from slither.slithir.operations import Length, Delete, HighLevelCall class CacheArrayLength(AbstractDetector): @@ -119,8 +119,10 @@ contract C # - when `push` is called # - when `pop` is called # - when `delete` is called on the entire array + # - when external function call is made (instructions from internal function calls are already in + # `node.all_slithir_operations()`, so we don't need to handle internal calls separately) if node.type == NodeType.EXPRESSION: - for op in node.irs: + for op in node.all_slithir_operations(): if isinstance(op, Length) and op.value == array: # op accesses array.length, not necessarily modifying it return True @@ -132,6 +134,8 @@ contract C and op.expression.expression.value == array ): return True + if isinstance(op, HighLevelCall) and not op.function.view and not op.function.pure: + return True for son in node.sons: if son not in visited: @@ -173,7 +177,7 @@ contract C if not CacheArrayLength._is_loop_referencing_array_length( if_node, visited, array, 1 ): - non_optimal_array_len_usages.append(if_node.expression) + non_optimal_array_len_usages.append(if_node) @staticmethod def _get_non_optimal_array_len_usages_for_function(f: Function) -> List[SourceMapping]: @@ -207,8 +211,10 @@ contract C ) for usage in non_optimal_array_len_usages: info = [ - f"Loop condition at {usage.source_mapping} should use cached array length instead of referencing " - f"`length` member of the storage array.\n " + "Loop condition at ", + usage, + " should use cached array length instead of referencing `length` member " + "of the storage array.\n ", ] res = self.generate_result(info) results.append(res) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt index a0ba35740..63d4b883c 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt @@ -1,14 +1,18 @@ -Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#47 should use cached array length instead of referencing `length` member of the storage array. +Loop condition at i < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#36) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#78 should use cached array length instead of referencing `length` member of the storage array. +Loop condition at i_scope_22 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#166) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#16 should use cached array length instead of referencing `length` member of the storage array. +Loop condition at j_scope_11 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#108) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#88 should use cached array length instead of referencing `length` member of the storage array. +Loop condition at i_scope_6 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#79) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#105 should use cached array length instead of referencing `length` member of the storage array. +Loop condition at i_scope_21 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#160) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#112 should use cached array length instead of referencing `length` member of the storage array. +Loop condition at k_scope_9 < array2.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#98) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#59 should use cached array length instead of referencing `length` member of the storage array. +Loop condition at k_scope_17 < array2.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#132) should use cached array length instead of referencing `length` member of the storage array. + +Loop condition at j_scope_15 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#125) should use cached array length instead of referencing `length` member of the storage array. + +Loop condition at i_scope_4 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#67) should use cached array length instead of referencing `length` member of the storage array. diff --git a/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol b/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol index 79858d182..704d6bed9 100644 --- a/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol +++ b/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol @@ -10,6 +10,26 @@ contract CacheArrayLength S[] array; S[] array2; + function h() external + { + + } + + function g() internal + { + this.h(); + } + + function h_view() external view + { + + } + + function g_view() internal view + { + this.h_view(); + } + function f() public { // array accessed but length doesn't change @@ -123,5 +143,29 @@ contract CacheArrayLength { } + + // array not modified, but it may potentially change in an internal function call + for (uint i = 0; i < array.length; i++) + { + g(); + } + + // array not modified, but it may potentially change in an external function call + for (uint i = 0; i < array.length; i++) + { + this.h(); + } + + // array not modified and it cannot be changed in a function call since g_view is a view function + for (uint i = 0; i < array.length; i++) // warning should appear + { + g_view(); + } + + // array not modified and it cannot be changed in a function call since h_view is a view function + for (uint i = 0; i < array.length; i++) // warning should appear + { + this.h_view(); + } } } \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol-0.8.17.zip b/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol-0.8.17.zip index ab3d813718b45d438f91556934cc243e900beb57..dafdfc43167f9eb622fed98bdc69e91d02f89dfa 100644 GIT binary patch delta 8644 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 delta 7346 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 Date: Mon, 15 May 2023 22:14:22 +0200 Subject: [PATCH 159/220] Fix yul function calls --- slither/solc_parsing/yul/parse_yul.py | 28 ++++++++++++++++-- tests/e2e/solc_parsing/test_ast_parsing.py | 4 +++ .../test_data/assembly-functions.sol | 11 +++++++ .../assembly-functions.sol-0.6.9-compact.zip | Bin 0 -> 1537 bytes .../assembly-functions.sol-0.6.9-legacy.zip | Bin 0 -> 1403 bytes .../assembly-functions.sol-0.7.6-compact.zip | Bin 0 -> 1510 bytes .../assembly-functions.sol-0.7.6-legacy.zip | Bin 0 -> 1378 bytes .../assembly-functions.sol-0.8.16-compact.zip | Bin 0 -> 1528 bytes .../assembly-functions.sol-0.6.9-compact.json | 9 ++++++ .../assembly-functions.sol-0.6.9-legacy.json | 5 ++++ .../assembly-functions.sol-0.7.6-compact.json | 9 ++++++ .../assembly-functions.sol-0.7.6-legacy.json | 5 ++++ ...assembly-functions.sol-0.8.16-compact.json | 9 ++++++ 13 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 tests/e2e/solc_parsing/test_data/assembly-functions.sol create mode 100644 tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-legacy.zip create mode 100644 tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.7.6-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.7.6-legacy.zip create mode 100644 tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.8.16-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-legacy.json create mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-legacy.json create mode 100644 tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json diff --git a/slither/solc_parsing/yul/parse_yul.py b/slither/solc_parsing/yul/parse_yul.py index 35d5cdd9d..978859a53 100644 --- a/slither/solc_parsing/yul/parse_yul.py +++ b/slither/solc_parsing/yul/parse_yul.py @@ -181,7 +181,7 @@ class YulScope(metaclass=abc.ABCMeta): def add_yul_local_function(self, func: "YulFunction") -> None: self._yul_local_functions.append(func) - def get_yul_local_function_from_name(self, func_name: str) -> Optional["YulLocalVariable"]: + def get_yul_local_function_from_name(self, func_name: str) -> Optional["YulFunction"]: return next( (v for v in self._yul_local_functions if v.underlying.name == func_name), None, @@ -252,6 +252,10 @@ class YulFunction(YulScope): def function(self) -> Function: return self._function + @property + def root(self) -> YulScope: + return self._root + def convert_body(self) -> None: node = self.new_node(NodeType.ENTRYPOINT, self._ast["src"]) link_underlying_nodes(self._entrypoint, node) @@ -271,6 +275,9 @@ class YulFunction(YulScope): def parse_body(self) -> None: for node in self._nodes: node.analyze_expressions() + for f in self._yul_local_functions: + if f != self: + f.parse_body() def new_node(self, node_type: NodeType, src: str) -> YulNode: if self._function: @@ -325,7 +332,10 @@ class YulBlock(YulScope): return yul_node def convert(self, ast: Dict) -> YulNode: - return convert_yul(self, self._entrypoint, ast, self.node_scope) + yul_node = convert_yul(self, self._entrypoint, ast, self.node_scope) + for f in self._yul_local_functions: + f.parse_body() + return yul_node def analyze_expressions(self) -> None: for node in self._nodes: @@ -390,7 +400,6 @@ def convert_yul_function_definition( root.add_yul_local_function(yul_function) yul_function.convert_body() - yul_function.parse_body() return parent @@ -809,6 +818,19 @@ def parse_yul_identifier(root: YulScope, _node: YulNode, ast: Dict) -> Optional[ if func: return Identifier(func.underlying) + # check yul-block scoped function + if isinstance(root, YulFunction): + yul_block = root.root + + # Iterate until we get to the YulBlock scope + while not isinstance(yul_block, YulBlock): + if isinstance(yul_block, YulFunction): + yul_block = yul_block.root + + func = yul_block.get_yul_local_function_from_name(name) + if func: + return Identifier(func.underlying) + magic_suffix = _parse_yul_magic_suffixes(name, root) if magic_suffix: return magic_suffix diff --git a/tests/e2e/solc_parsing/test_ast_parsing.py b/tests/e2e/solc_parsing/test_ast_parsing.py index a561343de..ebdd04d9a 100644 --- a/tests/e2e/solc_parsing/test_ast_parsing.py +++ b/tests/e2e/solc_parsing/test_ast_parsing.py @@ -453,6 +453,10 @@ ALL_TESTS = [ Test("complex_imports/import_aliases_issue_1319/test.sol", ["0.5.12"]), Test("yul-state-constant-access.sol", ["0.8.16"]), Test("negate-unary-element.sol", ["0.8.16"]), + Test( + "assembly-functions.sol", + ["0.6.9", "0.7.6", "0.8.16"], + ), ] # create the output folder if needed try: diff --git a/tests/e2e/solc_parsing/test_data/assembly-functions.sol b/tests/e2e/solc_parsing/test_data/assembly-functions.sol new file mode 100644 index 000000000..c7b1c17d3 --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/assembly-functions.sol @@ -0,0 +1,11 @@ +contract A { + function foo() public { + assembly { + function f() { function z() { function x() { g() } x() } z() } + function g() { + f() + } + g() + } + } +} diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-compact.zip new file mode 100644 index 0000000000000000000000000000000000000000..10b6ee248058585c51cf6277ed5477a09f86838b GIT binary patch literal 1537 zcma*nX*|;n00;2@Vn#Wl#*;Z09Ue!hJnsA4M2faOq{SLFTedMW%q^<9a+H!)dI}-o zVeX@Oh{D>e!^e?pJ?{G`kDm9>=kxr2FMh9nZ@=yc5m8HE4^g}|^~I9?0s=#Ex>qSAqJ$_I@Bsh@ z0GKBy;|;eBgA4n6t4*cyJBWdrO)3euJrpfe`IH8E{S{k_JD*@!*|G6I7x#HRWUe?V zE|u$f%;x4eJ=-tfQiC55#T$FtgA)j>itJL*prS>rzbR1&?SuQOj}Md-cAX5q_e+}1 zfgT_)9;g~`GmlyjdufNrC(D_{D1C9v<)Q=DQh8rGsnW_8a`JmyHcla|HCmR-2-5-w zr>tk8Ixi&MkcsikKm@^_87JFpfyvYzX?sAOx8~qP*cT{VEp9kCumGL zOB-JKI@<29IK3dY6#tU7JdWU~tUTqk7^%ZuJ3V99kcJuhZXXqpA;F)J)L7AI%ie_d zJAP2*d;2K4m6(b3)o#NBGJH`r*yN7fRXx+tJR$&5Xf0s*LkOy>Y0o*>L6PBkhifo; zk+{kW~X2#hj^29l*Nu3_3_pv#)N&MV#7IZ+FO(M_L38PHC9#6G456bkNo8D>eG zVk0$NYOV66(%e#}*&aomJ8Vrv+DTw5B*poLcOdaePa}$gP1-N*w%SE(znMd;$eTD{_a2K`5!w3p4pg2c89R8`|ZlHOU+EB_{2?HNPBIL7t5-5&lM-;HZR4cHmD(Xk*?^ zd&Jqe7Opgxyl2mr2FXs&K*B9OOjB#BdRXg>3sPgB|8Ogk(G6`cRvb8g)7e9`{!9jU z_3#AcIGkwqwpjFY3fw0(RU;F5V4ysmE8EWa>cp5bP0o;f6{(kyI8#%D=03vIMQMT4 z3Bnjz23WKsbuXN5VZ5;dtM13s)p)O0KgFCtbSZV&Q_9|3fhPDZ57x38X}G6};a@BL z9cn9I(^lajboJsD;#`d zg5eEh!LpJe!XF_*TSrkVP;=*FjJkJJJm=WR;^;x~Fiujsf(Zz^sfiv0@hY_iGmzD2 zXj!YoHF4qwILHU2s((CI%d7456Lu!Iq+s#t^2MTaW64`@q=lZBD>4%HZW=t^$mbV@ zIn|F3@5g9cuB^D1CCP@3ye4CL3S>c#itWDRccSAI;f8np#yXui@Mk$Wr4#f`J z@?mrrvLLJb`ts6vIa6%(D{DNH#QLs)*L%#1+Ueuu*1ID>dn`r%8|7V>{|y85bN)Zk U?g+5h&j)C?sNK!ng&qL@0g`UfH~;_u literal 0 HcmV?d00001 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-legacy.zip new file mode 100644 index 0000000000000000000000000000000000000000..b429bc3e35436fff28f2da46365ac4367ed774e7 GIT binary patch literal 1403 zcma)+YdF&j0LK5zZEl&{Fqg@3iQJ+ilFg9YRI9P5+@@jJmJP8KVI@R*oP!>8aa=+S z2SY+9=Dtl1%{Am+ZmlTd)cJm%=e+NS-}8QWzy2_2Az>tN05}M+nN_&qcii?4VE~Yj z0{{a60Q_k*0tp`$V-y%k4u~L9$TVXbCCrx)eU(Cu@b#w#1QVkO#vwEcSzK5I@CJZ* z0I*3;4l>_04}UT^P;V`r*Fh%gv}!Q!orfXdBeWLi(a-jX^f6U`+1WYPrX;Q)#$`=b()9EVfglsj5ua#{~&a*?x!hFA-$MHkU7 zw$hin8Dy7(Df$YpwYJwdq_?19ZLg~(@D`;BYBSY;uyGdATY`4`_K`bEkE1rD)(DYq zFUkeHgp;`lF3pxBLJvLCAhlJbuNZl!-W92-qTBY_O18tv#Ww30rVJ7ujvm>`j2bRq zU|2fdZdI;LD2moWuj7%YPsOTnqmG(`7T_0}l0I^ys;{Ovj;b27?D83KA$9~)6?MA9 zEPi|-7qdJc!yz??i|;}L_59>Ls=!J?5%==Ms%EG@o+C57ZJ+qQ>-sT#Q(}Mqr9oNd zr;H1iv81*as98e8g1*%Lj^k8d1FAKvbWIwZQFGWp(-Y5i@V1(Fnrsl+NVy!OC=pmP zJnpqV5=iQ@C$-(JSUyxHJgtto)ZErH+aSYH95dB8XH63XgDqWeH(JTB>(y&Cxo9Nd znHvKal8Ae(;bcEo?6fa*7n*0s$Iq_VzBJn|0yWSG#P9R#AG{7Mi9-3R?h>K?G?^?A z6=$+mvGllBTzKPaabl|eGXoprXiS23!`GD~7iCzK@3&d+t8WRFYrP(KqATQN#lGV^ zEgI>XJ4pkjGJ~+q8uQMnM)+2Y*YWf&vDm4t#mWa8ug(!tH-n(4{ozcoN>qxaL~Z^; zz&_1wc!B)k0!j)v$-}|= zI$R6zy}9^_Q{FyF)}nB%vuAyr@%IlB$`$;u!^BcdWMmQJ5)VFF6b2OhndWU+S)-#~ zF81kdNlms@ou#CI@pLHL#Dq0D&E73NiFR+(q)r4Y$T(Y<5B1sF3)-=gG5MCEqK~T* z!4~0bI&lNBN`7wph?L-qHpn`=n&4eI4;f#?THg@|^VOz= z@3W83m(^b literal 0 HcmV?d00001 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.7.6-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.7.6-compact.zip new file mode 100644 index 0000000000000000000000000000000000000000..300b4bf39f0421ea4e2f730dcc8d585c358cc42e GIT binary patch literal 1510 zcma*nYdF&j00!{CYfLmG8FHya7`bFIQz$e^NJx{*G?_7zYvkIP!?dR4&N<61EJ7Wd zyG%2kP_%?N8@W{&(Z$jEexB#N?}zu(`}OCH6cM!ogaH|VMXz`7Kx_;diUGh`MF2Po z0Dv!nfDZA)#^?v$!1+f6h2jWMLMYY;9UT@L9^vB~?vDwIL_@C=LUEF!V!#yuNCW`O z^z>`S-;MEQLxas0(uKXapu_D4(z0A22(?iHbKfz64I=xUvajq6@9Bz^dofvH4_T!f zxGd-0x32)d9f`mf;UwBPJ@_T2YuL{fkQEP z+HQn;^E9aF3lZn~BvTz^(pP-J*T8jdLGfGtIRiGXF?^062ogu z3c0VJEKpopB^v(dxGVvKIY{x{-j{6Dg#Nh4WzTDbI`577JB>pEAp-qKOqF`R)-z>e zeraY@59@sbF@WI34C2i$F*8DZF4N#q1i!}%vc(+j@3MeX>@@u~EUj?=-YA9}UjjBRRp+^#{!tnbc$l3=x*3VC zJIeKRgFA)D++5c?$~^c{Zf)cn?Ns{-tAeu%115i!8{c`k3IlJQeW-AOM(uCwB%4gw z~YW;x~R!=e6~ruX-UJM+TZBeGt}iG+d<*Uio8CF*mC z=ll5kz}1z`Z}I-CP1LuA0>*h^NW3fVbkN@2lV^QkfWuA&y2`=@)ow+ z?X8TWqev}xrAdENwLC)(^>ES8L@eLi&EbQ>hF-)cfk>;;0)4h|&u`T>`~9`6Fq0k1 zY)lj#EAtG524G-auY}ibZ2eNo5TdQUS&LhDNG0f6%b#OYtXRMB00BqIM=Aa}!j$}I zP#$j08aVk0G^&zOCemRme25-aIRG^iiYq=he0TTj){D|pyegKmDK9pW;)t+$Y4DqWf9fOyg~5*T7?^zJGtx&hiB zWCl4))Ubf(Xy^DxNfP0?pgdIbA!8anWwmog2a%QL!YmtfzVbkeO{-NKI1X~11qVBj z#BBwH>V{}tSBiMyq@4D{-G}4qxDf-y{5FEN<4-~7{ti52h0wLNC*HPf*C@7IxMtG9?Z{ z*#WX((m8>JjVZI$`fB`hH3|yg|K5u!FDzXbOPouBV_awT4l18+Il-t6i__>4_si%8 z4}S%anxYJDLN)KjMVK761SM literal 0 HcmV?d00001 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.7.6-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.7.6-legacy.zip new file mode 100644 index 0000000000000000000000000000000000000000..916e32eb2547685b6e0825b6413fdbcb1d3213ec GIT binary patch literal 1378 zcma*nYdF&j00!{CHn%XhXhv>P$ukOB$7MLgkPHzO3z=DLW`trSw20EF$hNY%bR$uO zT*6$Al9=Z(moAtg#nx~p+0prap69&phxgO_^@sKZfgONt00iiLRvnl^|ng%E<%)Xn{HN~FAS+SLT=GKxZ;e=AJ-05o#r(N6$0*EUqQjX zKQs6JR#b?3pu!!FCou?et^I6LRy3>TPL=*=~grxgxkEW1?b%pcV_+poSqmFB^&b93wLAQ1Yw7g zN#%-2{rV}tg)~&JCNKQ#MaFSDy!bL|vKr~+i8HC2I2|;dbN117ib0nqaPa5zp$!2_ za}#zymiBZRCl_MJ`eOHPn^M2)?YvY_dq)swkK;#1+A`~wx6dj{@*@Iz1mRdUp6(tp z>bJtp8Nl6ZE}Di~Y*Hybpw(e=P*mxoGj%R}V|MuQ(EiKacY1XeL8x_420ipR>z^l0l{Ad-dt=rfOJ8odMHEB2&}N+~d1b>i0_pS6P&7cf4jX`$5o{r_b`quUp37Ol$t$)+6&A>P(qJ z!Y}o?tDU^frZRMLQ;V)_j^;CxyAt#zH$8r7dosujJagz?w%OsS{V4xrrUIA8Nt{ zVXY67?o1`ntRbf|GAj47_%Gl;v(r%^x+iPsXp|1n>b>bx%gl{(8)eQ|6R=xF+s(2yZ_hDdJfJe1E z=B8UeJq#DdLfy9m%FUs=59LJrEVxYwEWM(LvDR6^t=KgUyV$x%x?-(w!}#EdtP6jx zg~f0Tu+1bto)ZmmbWp1sEwA7G)e6aG$vyyAT`e8wWDYG%!mOB0+s77^ubG_QXK3~C zf)k^_n;67*IyTkd^0|)}x0oQhXc`FqiYPcvtmX&P)ii#mnV&$<_H8 zxf1X+&jt+FJ#qNPnvo^6Hn7cWdUj*uWHS#phA5}M!i;ntpk%)EVJ@KS9|sY17$r4LRtv0=09aHHDrn4*LB%OG4e} zLpi7s1=p_fCcYrS*C}f(SSe=QT=x{;*29n1c@FY-eKLFVu?7gXmb~Vt5QPoaDM&SW zVSuJRu{O4q9#kn~YPcR*WjiDZse;{JTMc%aSxngdHhh+9HdiP~ zsSZ=2kn;oc5<8wj(hy>;!0>dYJd6nV z)abJXUjBO|gNqURe@Vk=v?rKS^6=>Bau3(u8#zGI1B7D-%47CktMx*ed31C1+A`ts z@{Tl|xWY$LD>3eX2^`LlCWglF?dO6^CGYKSmZ3eRwmE?QTfHs#{!O~nulfH5qCKT$ Qem$hN8o0HhElC039~*>+yZ`_I literal 0 HcmV?d00001 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.8.16-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.8.16-compact.zip new file mode 100644 index 0000000000000000000000000000000000000000..9a88417ba3a962eddb6396cdbd698545008b2b95 GIT binary patch literal 1528 zcma)+YdF&j0LK49lw6v-2x*pTp<&0ct-@S#FSkrKmxyi6hO|SI$(^LwqN9<{aV^5+ zHkWL2SrJmyArf=xL5hf@^Zh)}dEXDePw$8K%g@^})0Dz-V0txuAXlPIb(VrSZB2rFJNMRQPuU;XAQ!nDe{ewdy15aG0kcfN4!~rY- z&;h_ADd`ey6Gmna2cx}4o@M82nT z>$H3yz+wQkpE@jJmv&cL+UJLZ5OM17G0Z`)5bL@AZ_s_V0lbDTR~wLcGjH%QxhK6wD=2( zkmjeKYDI!A&F3E^v1o2K&dHPz6C>%+Ak>a|&?fU>a&bde5?_m0VS!^CX%xs8{vN zl`-|6G<}xDWY<-`>QmO}tmjmjwrRn=6bae%>jBB7C_ScJ{q6+{J=^u?LsaT zupRb$)7?<|{TL4S=Fw`6Yy1cOxOe5T8bf2JV9%2?t_NzHdY);Nr>UE2<$7e+Ybf3} zi?Qi-v=mP?E_NXT6!{*16zK3orl$M#pANaHuRBG|rnBcHmm?U4*KUXB)eJxn{DxaE z7m|kP&sx{(Qt|G4ntl3j8MZv~82JLz)``fBXa^lu53j~Y&Ho&3CM=9*6!CHmN;b8} zgA<%$bK<-~DKX4Lb%_(4wY2oJ!g8m8v_WUNWxJ&jl_7-0cTk6^!njt!@s}XMWV15W zWwu+V%U3f984z%k`PRBv%JE1n+%u6hHGm|9Jgl$x`3~CGaZ1s4Zus{Zf@C5^ssTbS zQVkQ#<0CnJjonOh0D6}d)L`kC4~p8T;F+rY-8fv9G!ykucK}rsh^Xkmo%~_NqzOXnaFmmM1ueIS1{)1ALbLwwqkzC(d6yyRXRk$E|@hUx8(&< zJxNs~ST?;}Lbu-N>NF{v&XbfEdROXc^969>kL6@Wl#*NecsTq=WWNWijIsHFXkxNklGcRX!IAXQOT(kKC?4LX&~|Innellu+pC5_XHJQA1_i$Am!y zT&s%}zhZ}l#FHJ?rq5N#lt^Q?_wnliXM2%dDAE6R@s5uF4PE3H{=b=>?ZtQhT8Qk_ MbB8HAeg}Ym030d55dZ)H literal 0 HcmV?d00001 diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-compact.json new file mode 100644 index 000000000..ea4faf796 --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-compact.json @@ -0,0 +1,9 @@ +{ + "A": { + "foo()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.f()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.f.z()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.f.z.x()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.g()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-legacy.json new file mode 100644 index 000000000..09c0a51f7 --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-legacy.json @@ -0,0 +1,5 @@ +{ + "A": { + "foo()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json new file mode 100644 index 000000000..ea4faf796 --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json @@ -0,0 +1,9 @@ +{ + "A": { + "foo()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.f()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.f.z()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.f.z.x()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.g()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-legacy.json new file mode 100644 index 000000000..09c0a51f7 --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-legacy.json @@ -0,0 +1,5 @@ +{ + "A": { + "foo()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json new file mode 100644 index 000000000..ea4faf796 --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json @@ -0,0 +1,9 @@ +{ + "A": { + "foo()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.f()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.f.z()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.f.z.x()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.g()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" + } +} \ No newline at end of file From 413a50a1d2561fbec306c1823079e6b1579b0f54 Mon Sep 17 00:00:00 2001 From: Simone Date: Mon, 15 May 2023 22:57:40 +0200 Subject: [PATCH 160/220] Fix call to a function in an inner scope --- slither/solc_parsing/yul/parse_yul.py | 7 ++++++- .../test_data/assembly-functions.sol | 1 + .../assembly-functions.sol-0.6.9-compact.zip | Bin 1537 -> 1607 bytes .../assembly-functions.sol-0.6.9-legacy.zip | Bin 1403 -> 1433 bytes .../assembly-functions.sol-0.7.6-compact.zip | Bin 1510 -> 1588 bytes .../assembly-functions.sol-0.7.6-legacy.zip | Bin 1378 -> 1414 bytes .../assembly-functions.sol-0.8.16-compact.zip | Bin 1528 -> 1605 bytes .../assembly-functions.sol-0.6.9-compact.json | 3 +++ .../assembly-functions.sol-0.7.6-compact.json | 3 +++ ...assembly-functions.sol-0.8.16-compact.json | 3 +++ 10 files changed, 16 insertions(+), 1 deletion(-) diff --git a/slither/solc_parsing/yul/parse_yul.py b/slither/solc_parsing/yul/parse_yul.py index 978859a53..8657947ea 100644 --- a/slither/solc_parsing/yul/parse_yul.py +++ b/slither/solc_parsing/yul/parse_yul.py @@ -787,6 +787,7 @@ def _parse_yul_magic_suffixes(name: str, root: YulScope) -> Optional[Expression] return None +# pylint: disable=too-many-branches def parse_yul_identifier(root: YulScope, _node: YulNode, ast: Dict) -> Optional[Expression]: name = ast["name"] @@ -822,8 +823,12 @@ def parse_yul_identifier(root: YulScope, _node: YulNode, ast: Dict) -> Optional[ if isinstance(root, YulFunction): yul_block = root.root - # Iterate until we get to the YulBlock scope + # Iterate until we searched in all the scopes until the YulBlock scope while not isinstance(yul_block, YulBlock): + func = yul_block.get_yul_local_function_from_name(name) + if func: + return Identifier(func.underlying) + if isinstance(yul_block, YulFunction): yul_block = yul_block.root diff --git a/tests/e2e/solc_parsing/test_data/assembly-functions.sol b/tests/e2e/solc_parsing/test_data/assembly-functions.sol index c7b1c17d3..224e16bab 100644 --- a/tests/e2e/solc_parsing/test_data/assembly-functions.sol +++ b/tests/e2e/solc_parsing/test_data/assembly-functions.sol @@ -2,6 +2,7 @@ contract A { function foo() public { assembly { function f() { function z() { function x() { g() } x() } z() } + function w() { function a() {} function b() { a() } b() } function g() { f() } diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-compact.zip index 10b6ee248058585c51cf6277ed5477a09f86838b..8389eb6f593dc3d0adfaf206f8ba933852ff32db 100644 GIT binary patch delta 1135 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 delta 1056 zcmV+*1mF9#4CV_PP)h>@KL7#%4gkoouU5c5_tG#0002rC001hJ@dYihNM!+kS^tQ* zz*RdDUu(x4b(wR3NuRSGk0%!$Ejg(m11qzM3$_crFw#j!?&6c(%A6D$+WUJV4UWi! z4>dGG@ex`m(Kc{LA&57Muq)TvSyVhuZ4P|)EGoSt=@RtR`=vp@IX|0970fiyqBD`t z^EeRtN~RT2rIg9O!H+cFLzo$Vcy&LGTK92|9x%j7DbiIU$V|EUrF=c5aY6azemdYr zs=IBSY#hipSvte7WxU_bb~{}g_=gf);zl^%k&0QpT;@pW3Jyt@XWDSiXx<2`yXarV zVeQKuONpo4h`iim)MblCLbY{XuDmJgS7gY%KcC`S%atlTONR6aP=aoMOm-a_IyW+# zkEBFsSaz=&PKsVG)2`^~EPyS|hfl}m77(haP}y-~^R<-Oob|j<0vdf&Zq>y0>~oLn zIU9uHjwfiaB|JDOHr_&q?Ng_ezqv8}tfwf+{gRtP$!vO7X!KY3j(R%#Qa*?J zmKD5C+gL9A>|!(pnp{*#;T88R zbno>8yBX`S=d%xtszVrKD5+@Qz#GeGcd%>@xe8?fI1npZe$`aVEufOpKEA)UCfcqf z9BF5_y4c{zdSY^9_01Vy8GXh+HIJ;$6Ffr5%s}r7*BptV1HeRo0wl0-sLU=m0ehZJ z(~}I9>Ta1!rF6IG`fKF{;_j7_jhxir5Ss(FQ4{QoK&2fKIfv25n&-ZOr|7A8Cydkf7MjuZ}Mw$>yR}KsF+DUw8YeAZ8b96V2XIMF3D*(8cK&DJ3NpmkYjfVhdh-Em|nIdGo`SD z^TFdOK8=M^y`j!fU704!rL7;#HVRYc5Nk<_21NC9s0D^rpNoZk{CrVJ%}uG)0W zhnl`~C`|tK!5F}Cy!U@1T$DJ5rA-&kY%FM0pU%P|AJY&#QnP`Se7z8KYjQL{<(@Cz z!g8Q)GO{Y@nqJLE+?5=#p(s{<6^q)O!LAp*2qZ4cWDyXGP4zoNHNCq+V133Pl3oDj zqs3^VoS^n>1%T**JZMwrEF&95w>iA6aC;%d24acB5YzYyzNmxTr!VAQE~y(LaFBa# z!DPJpZ*cJ69T`@0WwIK8kn)uL@b{~Ol*~Bed8`DECkg)Y2V77~0Rle*KL7#%4gkoo auU5c5_tG#0002rCli&qT26zPk0002MruXpx diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.7.6-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.7.6-legacy.zip index 916e32eb2547685b6e0825b6413fdbcb1d3213ec..c1285733d81f638c7c279f1709d3547f7ab2bc15 100644 GIT binary patch delta 775 zcmV+i1Ni*n3Wf_CP)h>@KL7#%4ghhsuT}?yUb@f(006lX001hJ9|bM3NE`xxoGV&c zNQzLkntiT4sxbO%@AgGWA@uTHtLyc;eoT)tJ)TLce&ui)usM!pqTpf*JtlO)j~H@y zN=92@*wtNL@3|3cD+V@Q7t3KrHYw{k!6_^C;uQ1Sxf551bj-U$&BqH>vP`_;xJx z;+a;|<#3GRc_p!2TfDy-fTOH|Fla8(O!%YGk{4R;Up(!FKW`elABo0V?<`5QRco?7 z^R9{s@npNX-NC0s^XjIs@sdBEHJgo+6{Ko19edb{b|uTfy2?1)rG6iO0x5B2%?Mu< zRp(lAe3oarftqhAD@U)Y3Cj)+Q*mApkoG)A;YFV|$Y|>2Kkh4n>Q;Q^6{A5R)$V>r z$_K706I5?_FCi==Wv}mXVjB5{Skib|Q~h~}2t!FMiB9&g3YmFb{U)Jh_OmqOqp^v0 zyx)1j^j2?f?->q@eLYWqQ*)4XGjmc71iTxf65&&Sz=MSlSU~P=dpyAFf_k!i@LPeq z5`8Kd>aW=2WzhINnlzZ^=lubVxACU92BF37&WBK+gAe}Z-@RGJS&GmHs;+0H1Nw84kbPhd}b zwOD>7nhh9k_rlHyT(%Jh$7dgjL59gdIw6ZK0WSpW_8dt*-Y||Pv+31lZN~*ZkZ(_Q z8QjQ9BW$7weo+ajxuaZyLIp9lvaJqr1B8)yVmwS-`nj9XgU!4=MXo&?GS4-FY(@>wNWjnD*XD{&)YAIc=9th{(AOiEt3x3q--O`>DyF z1F-l1vLkgjxS#D$|H5yK!ca>A0zU&k00ICG0CBdjRtJP$y3hmw0J##A4h2pI7zF?T F005F0ZcYFI delta 732 zcmV<20weu~3*rhGP)h>@KL7#%4gkoouT~Jaj(MyE008?Du^3DOe;WNZ#L;y9+no{r z;Mv1aW*EbrqrFGq34ZQ|hl@Kz8obvIecXq<*>}Ql-mzoxV!o(&mg04rHV#{Yf~+T^ z=d>;Th7-p#KZti|4m@FHUv3Y=i%6uRE1Ts+$Qk+xxlhpK7i@^r6rlib1!q4}z`pOj z{71lMbv5nJJ+=Aoe+D;FhMY!6Pz3U=%uxZRwD~CB&+zeTNWnmhfHtl;E%I;}NeTcD zykQ=w2=pj2*}6AooTiwa_rs>yrXAxNd%h+GruWMHB{5fpddc@*x2yL**#A_&v73B^4c(^Z6}PfO-L?E#?v3age`OlK$~d! zrcwX0FaIUN8u341aop0{YQbw=qyNx6lB7^e0Rle*KL7#%4gkoouT~Jaj(MyE008?D OlQIQP2J{2~0000P>ts{_ diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.8.16-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.8.16-compact.zip index 9a88417ba3a962eddb6396cdbd698545008b2b95..a2b78d7b0698f3f623f5a2a37a95314adaa14197 100644 GIT binary patch delta 1124 zcmV-q1e^Q#3&ji=P)h>@KL7#%4ghhsuU3)0TTYJ!006@ou^6fWe<-GIdm<|qgPLus z)qD0-))LC{XRyf6q?%Mw;DE6v;AqFDBD`g$GJmK~n2I)dBUew?9u4ZEj7{G%%dMvC zo|A`23WLAw0RdeA6Z&w+9r1m-`FX5inpPjU`fOkXCGOWJJrLO}|2c-9CbgMBz%yQr zHonDr0KAwxvjbT)e|oHxZ4EKT@r@7f5ERW0532P3>YF##3f|8HlVGq2%zjYp7yxv? z(xU@Y1+` zly7+DlOysBqqlr%RC3e(rD}2#qZ_ayE7DyGqxW#w+f#}cB=`|jIk})i(;$25F1K)0 z6&Yr?8emN&$Gz6bZ}I5CxZkU)d@m3r=ygM7N(C5{VEeLA@W~M25=Z;kO;rO0gdI44 zDx#^~+5B0ef76BDay4+tZ_f_q!l2apS7Z(3OMEp!bKe|s|J!!ng!0phm3N?DgR+NptX zjCIi9Rm)Xk`a`D$jC3ZK50W}RJUZ2r{mKSlO*v#Z> zVu^%LDM#LfQ^(vmbK<}IQnVbS^RxGnN~N>o$aE#r61-zVd|@p|0~LJhD5RfG|DpIG z0)$ajSC{oT?Rs~ue)@0cbUW$utT#_QOX22J9*ty1!4~dhA*WcOT?I(RcFmqTHQ;kVx;2 zesF5Lb874TrHjk2AzlnAk6h~i;t=6I$GVvFFeKrYv0H9`-4yUg4Xn)9J9>n{n| zM603pkkEAnI|_e6@+Z`FB<*Y9N~Rp!JGo1uYYCKsv1IzmK_QWc05d)!Ap-p{0T8Rx zj9SRrF9sS+*$Y@oWrhjh`rJ5TiSvd*H)qcXe}X!0m%jW0Z8FzRZ`i00rNoIw;Q#rI qNZ3$I0Rle*KL7#%4ghhsuU3)0TTYJ!006@olcWVs2G<1u00012$s;ZR delta 1046 zcmV+x1nK+54EPHeP)h>@KL7#%4gkoouT~F7x9CCz001Nwu^6fWf7~3)j4zo7Y3O#k)O_+bY(3~EzSS~ zvgtt6<`p}AwuHNM2(`Wg5$!0)NnYrtpr+^&Z}t!Qd15St zG=PL^QW)dC`|auLf6uLA+9sy71^!c%?A-Z4jRRL(gl*z-pJB>EY1K{tY<#?xYk-}7 zx4(uevK@NIpwVI4tbQHU+(9$MiH?6|Avst>yAyjHIUtu;kGLHbk~@7!%uYlFhc%^9 zZUA!=%VR$hB;k)AR)76Xmy6TI0XycC>j?67gfV)Oa+|c$e=Qq0Vfn1;Z`FXg!1=a| zVpa*gT+xs*zNS~$?=vAIb&qwz5+odQvSN4a{nov0?c0u{#+NXu{2}0Ig-?E#fm#xZ zeV8J)hvB#QjEzj{tWRW&)KC!eO7Ykj)j9|F62mzZ;2@tY&l1k#y%%&*>B=L>ULR&Y zWMnFs*+!)ce@-ZVH&};n(+eeZ3u^R3%Vz9qZw?@>|%De z&AZB&JOC|~nP$2~V4Mn<~7~i|rtBB}#q$bioqh&g+!(lS|MVNHe_2=ExPs}tY z6oiAJPB%?z&oJ3F&Tw99(ELvWvZY!YT|n_z7s!p{f5(AIwC-cC!e|(J`E8*UDZney zZp$4S#wp}R!O$nc9-(wRz?+QRM6)wl0TZr!SpGk@J;geCdv1XHCuzSX9PwtimL~P? zHk00^cZ>M6ZENkh4tBy_2ZdvQ&@-6l`aI$CNd#btd2#=f^?)Z7N@$tb5dK*w88UPl zZA84!fAK)Tg2=@-tLB>s6Y5&7BiumfR5Ww9MI-L}W8N{>%oczvGrSy2Sz%yMnZ6V1 z^dam~#s^a9Z5H#?1T7&|F;2_b!;r1Rj=ou#+a)n=TstMkMuR;;7nN2wDS};G2r@r= zKLo7nDK8(FQ}LsIV#cArJ~Im*H#Sc3OlyW$ecmTM{*CqPS?)6@0N=6nddvzdezenaX;F+@69ex|kNET%|-j1rxjK^YPBF0*Q zY1_2F4hq7L+Gj_Do15}V)yMX+Tw9{)caki2|FS514lQ6$doNq5bAUjpp}sjZx~_rZ zh15DXAjp}6^GaPOgKqL1x^Nv1poj50L}&Uh5!Hn diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-compact.json index ea4faf796..a48faa23d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-compact.json @@ -4,6 +4,9 @@ "foo.asm_0.f()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.f.z()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.f.z.x()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.w()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.w.a()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n}\n", + "foo.asm_0.w.b()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.g()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json index ea4faf796..a48faa23d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json @@ -4,6 +4,9 @@ "foo.asm_0.f()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.f.z()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.f.z.x()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.w()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.w.a()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n}\n", + "foo.asm_0.w.b()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.g()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json index ea4faf796..a48faa23d 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json @@ -4,6 +4,9 @@ "foo.asm_0.f()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.f.z()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.f.z.x()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.w()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", + "foo.asm_0.w.a()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n}\n", + "foo.asm_0.w.b()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.g()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" } } \ No newline at end of file From 19014e15c28a8945ab7c549b971f323e54d459de Mon Sep 17 00:00:00 2001 From: Feist Josselin Date: Tue, 16 May 2023 11:18:44 +0200 Subject: [PATCH 161/220] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 5616bdeec..70d4f71fd 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ setup( "prettytable>=3.3.0", "pycryptodome>=3.4.6", # "crytic-compile>=0.3.1,<0.4.0", - "crytic-compile@git+https://github.com/crytic/crytic-compile.git@windows-rel-path#egg=crytic-compile", + "crytic-compile@git+https://github.com/crytic/crytic-compile.git@dev#egg=crytic-compile", "web3>=6.0.0", "eth-abi>=4.0.0", "eth-typing>=3.0.0", From 649e8d5e9426ef6b67dcadab4ce6be6689d16b70 Mon Sep 17 00:00:00 2001 From: Feist Josselin Date: Fri, 19 May 2023 14:43:55 +0200 Subject: [PATCH 162/220] Minor python improvements --- .../statements/incorrect_using_for.py | 305 +++++++++--------- ..._8_17_IncorrectUsingForTopLevel_sol__0.txt | 24 +- 2 files changed, 173 insertions(+), 156 deletions(-) diff --git a/slither/detectors/statements/incorrect_using_for.py b/slither/detectors/statements/incorrect_using_for.py index 4df0701a2..e2e87e7e0 100644 --- a/slither/detectors/statements/incorrect_using_for.py +++ b/slither/detectors/statements/incorrect_using_for.py @@ -1,3 +1,5 @@ +from typing import List + from slither.core.declarations import Contract, Structure, Enum from slither.core.declarations.using_for_top_level import UsingForTopLevel from slither.core.solidity_types import ( @@ -9,7 +11,148 @@ from slither.core.solidity_types import ( ArrayType, ) from slither.core.solidity_types.elementary_type import Uint, Int, Byte -from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification +from slither.detectors.abstract_detector import ( + AbstractDetector, + DetectorClassification, + DETECTOR_INFO, +) +from slither.utils.output import Output + + +def _is_correctly_used(type_: Type, library: Contract) -> bool: + """ + Checks if a `using library for type_` statement is used correctly (that is, does library contain any function + with type_ as the first argument). + """ + for f in library.functions: + if len(f.parameters) == 0: + continue + if f.parameters[0].type and not _implicitly_convertible_to(type_, f.parameters[0].type): + continue + return True + return False + + +def _implicitly_convertible_to(type1: Type, type2: Type) -> bool: + """ + Returns True if type1 may be implicitly converted to type2. + """ + if isinstance(type1, TypeAlias) or isinstance(type2, TypeAlias): + if isinstance(type1, TypeAlias) and isinstance(type2, TypeAlias): + return type1.type == type2.type + return False + + if isinstance(type1, UserDefinedType) and isinstance(type2, UserDefinedType): + if isinstance(type1.type, Contract) and isinstance(type2.type, Contract): + return _implicitly_convertible_to_for_contracts(type1.type, type2.type) + + if isinstance(type1.type, Structure) and isinstance(type2.type, Structure): + return type1.type.canonical_name == type2.type.canonical_name + + if isinstance(type1.type, Enum) and isinstance(type2.type, Enum): + return type1.type.canonical_name == type2.type.canonical_name + + if isinstance(type1, ElementaryType) and isinstance(type2, ElementaryType): + return _implicitly_convertible_to_for_elementary_types(type1, type2) + + if isinstance(type1, MappingType) and isinstance(type2, MappingType): + return _implicitly_convertible_to_for_mappings(type1, type2) + + if isinstance(type1, ArrayType) and isinstance(type2, ArrayType): + return _implicitly_convertible_to_for_arrays(type1, type2) + + return False + + +def _implicitly_convertible_to_for_arrays(type1: ArrayType, type2: ArrayType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2. + """ + return _implicitly_convertible_to(type1.type, type2.type) + + +def _implicitly_convertible_to_for_mappings(type1: MappingType, type2: MappingType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2. + """ + return type1.type_from == type2.type_from and type1.type_to == type2.type_to + + +def _implicitly_convertible_to_for_elementary_types( + type1: ElementaryType, type2: ElementaryType +) -> bool: + """ + Returns True if type1 may be implicitly converted to type2. + """ + if type1.type == "bool" and type2.type == "bool": + return True + if type1.type == "string" and type2.type == "string": + return True + if type1.type == "bytes" and type2.type == "bytes": + return True + if type1.type == "address" and type2.type == "address": + return _implicitly_convertible_to_for_addresses(type1, type2) + if type1.type in Uint and type2.type in Uint: + return _implicitly_convertible_to_for_uints(type1, type2) + if type1.type in Int and type2.type in Int: + return _implicitly_convertible_to_for_ints(type1, type2) + if ( + type1.type != "bytes" + and type2.type != "bytes" + and type1.type in Byte + and type2.type in Byte + ): + return _implicitly_convertible_to_for_bytes(type1, type2) + return False + + +def _implicitly_convertible_to_for_bytes(type1: ElementaryType, type2: ElementaryType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2 assuming they are both bytes. + """ + assert type1.type in Byte and type2.type in Byte + assert type1.size is not None + assert type2.size is not None + + return type1.size <= type2.size + + +def _implicitly_convertible_to_for_addresses(type1: ElementaryType, type2: ElementaryType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2 assuming they are both addresses. + """ + assert type1.type == "address" and type2.type == "address" + # payable attribute to be implemented; for now, always return True + return True + + +def _implicitly_convertible_to_for_ints(type1: ElementaryType, type2: ElementaryType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2 assuming they are both ints. + """ + assert type1.type in Int and type2.type in Int + assert type1.size is not None + assert type2.size is not None + + return type1.size <= type2.size + + +def _implicitly_convertible_to_for_uints(type1: ElementaryType, type2: ElementaryType) -> bool: + """ + Returns True if type1 may be implicitly converted to type2 assuming they are both uints. + """ + assert type1.type in Uint and type2.type in Uint + assert type1.size is not None + assert type2.size is not None + + return type1.size <= type2.size + + +def _implicitly_convertible_to_for_contracts(contract1: Contract, contract2: Contract) -> bool: + """ + Returns True if contract1 may be implicitly converted to contract2. + """ + return contract1 == contract2 or contract2 in contract1.inheritance class IncorrectUsingFor(AbstractDetector): @@ -48,150 +191,19 @@ class IncorrectUsingFor(AbstractDetector): "matching a type used in these statements. " ) - @staticmethod - def _implicitly_convertible_to_for_contracts(contract1: Contract, contract2: Contract) -> bool: - """ - Returns True if contract1 may be implicitly converted to contract2. - """ - return contract1 == contract2 or contract2 in contract1.inheritance - - @staticmethod - def _implicitly_convertible_to_for_uints(type1: ElementaryType, type2: ElementaryType) -> bool: - """ - Returns True if type1 may be implicitly converted to type2 assuming they are both uints. - """ - assert type1.type in Uint and type2.type in Uint - - return type1.size <= type2.size - - @staticmethod - def _implicitly_convertible_to_for_ints(type1: ElementaryType, type2: ElementaryType) -> bool: - """ - Returns True if type1 may be implicitly converted to type2 assuming they are both ints. - """ - assert type1.type in Int and type2.type in Int - - return type1.size <= type2.size - - @staticmethod - def _implicitly_convertible_to_for_addresses( - type1: ElementaryType, type2: ElementaryType - ) -> bool: - """ - Returns True if type1 may be implicitly converted to type2 assuming they are both addresses. - """ - assert type1.type == "address" and type2.type == "address" - # payable attribute to be implemented; for now, always return True - return True - - @staticmethod - def _implicitly_convertible_to_for_bytes(type1: ElementaryType, type2: ElementaryType) -> bool: - """ - Returns True if type1 may be implicitly converted to type2 assuming they are both bytes. - """ - assert type1.type in Byte and type2.type in Byte - - return type1.size <= type2.size - - @staticmethod - def _implicitly_convertible_to_for_elementary_types( - type1: ElementaryType, type2: ElementaryType - ) -> bool: - """ - Returns True if type1 may be implicitly converted to type2. - """ - if type1.type == "bool" and type2.type == "bool": - return True - if type1.type == "string" and type2.type == "string": - return True - if type1.type == "bytes" and type2.type == "bytes": - return True - if type1.type == "address" and type2.type == "address": - return IncorrectUsingFor._implicitly_convertible_to_for_addresses(type1, type2) - if type1.type in Uint and type2.type in Uint: - return IncorrectUsingFor._implicitly_convertible_to_for_uints(type1, type2) - if type1.type in Int and type2.type in Int: - return IncorrectUsingFor._implicitly_convertible_to_for_ints(type1, type2) - if ( - type1.type != "bytes" - and type2.type != "bytes" - and type1.type in Byte - and type2.type in Byte - ): - return IncorrectUsingFor._implicitly_convertible_to_for_bytes(type1, type2) - return False - - @staticmethod - def _implicitly_convertible_to_for_mappings(type1: MappingType, type2: MappingType) -> bool: - """ - Returns True if type1 may be implicitly converted to type2. - """ - return type1.type_from == type2.type_from and type1.type_to == type2.type_to - - @staticmethod - def _implicitly_convertible_to_for_arrays(type1: ArrayType, type2: ArrayType) -> bool: - """ - Returns True if type1 may be implicitly converted to type2. - """ - return IncorrectUsingFor._implicitly_convertible_to(type1.type, type2.type) - - @staticmethod - def _implicitly_convertible_to(type1: Type, type2: Type) -> bool: - """ - Returns True if type1 may be implicitly converted to type2. - """ - if isinstance(type1, TypeAlias) or isinstance(type2, TypeAlias): - if isinstance(type1, TypeAlias) and isinstance(type2, TypeAlias): - return type1.type == type2.type - return False - - if isinstance(type1, UserDefinedType) and isinstance(type2, UserDefinedType): - if isinstance(type1.type, Contract) and isinstance(type2.type, Contract): - return IncorrectUsingFor._implicitly_convertible_to_for_contracts( - type1.type, type2.type - ) - - if isinstance(type1.type, Structure) and isinstance(type2.type, Structure): - return type1.type.canonical_name == type2.type.canonical_name - - if isinstance(type1.type, Enum) and isinstance(type2.type, Enum): - return type1.type.canonical_name == type2.type.canonical_name - - if isinstance(type1, ElementaryType) and isinstance(type2, ElementaryType): - return IncorrectUsingFor._implicitly_convertible_to_for_elementary_types(type1, type2) - - if isinstance(type1, MappingType) and isinstance(type2, MappingType): - return IncorrectUsingFor._implicitly_convertible_to_for_mappings(type1, type2) - - if isinstance(type1, ArrayType) and isinstance(type2, ArrayType): - return IncorrectUsingFor._implicitly_convertible_to_for_arrays(type1, type2) - - return False - - @staticmethod - def _is_correctly_used(type_: Type, library: Contract) -> bool: - """ - Checks if a `using library for type_` statement is used correctly (that is, does library contain any function - with type_ as the first argument). - """ - for f in library.functions: - if len(f.parameters) == 0: - continue - if not IncorrectUsingFor._implicitly_convertible_to(type_, f.parameters[0].type): - continue - return True - return False - - def _append_result(self, results: list, uf: UsingForTopLevel, type_: Type, library: Contract): - info = ( - f"using-for statement at {uf.source_mapping} is incorrect - no matching function for {type_} found in " - f"{library}.\n" - ) + def _append_result( + self, results: List[Output], uf: UsingForTopLevel, type_: Type, library: Contract + ) -> None: + info: DETECTOR_INFO = [ + f"using-for statement at {uf.source_mapping} is incorrect - no matching function for {type_} found in ", + library, + ".\n", + ] res = self.generate_result(info) results.append(res) - def _detect(self): - results = [] + def _detect(self) -> List[Output]: + results: List[Output] = [] for uf in self.compilation_unit.using_for_top_level: # UsingForTopLevel.using_for is a dict with a single entry, which is mapped to a list of functions/libraries @@ -200,7 +212,12 @@ class IncorrectUsingFor(AbstractDetector): for lib_or_fcn in uf.using_for[type_]: # checking for using-for with functions is already performed by the compiler; we only consider libraries if isinstance(lib_or_fcn, UserDefinedType): - if not self._is_correctly_used(type_, lib_or_fcn.type): - self._append_result(results, uf, type_, lib_or_fcn.type) + lib_or_fcn_type = lib_or_fcn.type + if ( + isinstance(type_, Type) + and isinstance(lib_or_fcn_type, Contract) + and not _is_correctly_used(type_, lib_or_fcn_type) + ): + self._append_result(results, uf, type_, lib_or_fcn_type) return results diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectUsingFor_0_8_17_IncorrectUsingForTopLevel_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectUsingFor_0_8_17_IncorrectUsingForTopLevel_sol__0.txt index 4a85bca5f..518fba20d 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectUsingFor_0_8_17_IncorrectUsingForTopLevel_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectUsingFor_0_8_17_IncorrectUsingForTopLevel_sol__0.txt @@ -1,24 +1,24 @@ -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#84 is incorrect - no matching function for bytes17[] found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#84 is incorrect - no matching function for bytes17[] found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#85 is incorrect - no matching function for uint256 found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#85 is incorrect - no matching function for uint256 found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#90 is incorrect - no matching function for mapping(int256 => uint128) found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#90 is incorrect - no matching function for mapping(int256 => uint128) found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#86 is incorrect - no matching function for int256 found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#86 is incorrect - no matching function for int256 found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#89 is incorrect - no matching function for E2 found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#89 is incorrect - no matching function for E2 found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#93 is incorrect - no matching function for bytes[][] found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#93 is incorrect - no matching function for bytes[][] found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#92 is incorrect - no matching function for string[][] found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#92 is incorrect - no matching function for string[][] found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#91 is incorrect - no matching function for mapping(int128 => uint256) found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#91 is incorrect - no matching function for mapping(int128 => uint256) found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#87 is incorrect - no matching function for bytes18 found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#87 is incorrect - no matching function for bytes18 found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#88 is incorrect - no matching function for S2 found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#88 is incorrect - no matching function for S2 found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#83 is incorrect - no matching function for C3 found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#83 is incorrect - no matching function for C3 found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). -using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#94 is incorrect - no matching function for custom_int found in L. +using-for statement at tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#94 is incorrect - no matching function for custom_int found in L (tests/e2e/detectors/test_data/incorrect-using-for/0.8.17/IncorrectUsingForTopLevel.sol#48-64). From fda41f4fb47be2c9aaa6276c07fa67aac2878dcb Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 23 May 2023 18:11:59 -0500 Subject: [PATCH 163/220] chore: bump pip-audit to 1.08 --- .github/workflows/pip-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pip-audit.yml b/.github/workflows/pip-audit.yml index 20367787d..4fbc1a3fd 100644 --- a/.github/workflows/pip-audit.yml +++ b/.github/workflows/pip-audit.yml @@ -34,6 +34,6 @@ jobs: python -m pip install . - name: Run pip-audit - uses: pypa/gh-action-pip-audit@v1.0.7 + uses: pypa/gh-action-pip-audit@v1.0.8 with: virtual-environment: /tmp/pip-audit-env From b932371e4c4b57237a4c40c0d255f5b9e8dfb170 Mon Sep 17 00:00:00 2001 From: webthethird Date: Wed, 24 May 2023 12:55:10 -0500 Subject: [PATCH 164/220] Avoid IndexError in `is_function_modified` --- slither/utils/upgradeability.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 7b4e8493a..9fb55ce81 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -220,6 +220,8 @@ def is_function_modified(f1: Function, f2: Function) -> bool: visited.extend([node_f1, node_f2]) queue_f1.extend(son for son in node_f1.sons if son not in visited) queue_f2.extend(son for son in node_f2.sons if son not in visited) + if len(node_f1.irs) != len(node_f2.irs): + return True for i, ir in enumerate(node_f1.irs): if encode_ir_for_compare(ir) != encode_ir_for_compare(node_f2.irs[i]): return True From 58391ae487406a1ed1870028a5e50d0bf80af3b1 Mon Sep 17 00:00:00 2001 From: webthethird Date: Wed, 24 May 2023 12:57:12 -0500 Subject: [PATCH 165/220] Improve encoding for comparison --- slither/utils/upgradeability.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 9fb55ce81..8d18dd67c 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -275,13 +275,13 @@ def encode_ir_for_compare(ir: Operation) -> str: if isinstance(ir, Assignment): return f"({encode_var_for_compare(ir.lvalue)}):=({encode_var_for_compare(ir.rvalue)})" if isinstance(ir, Index): - return f"index({ntype(ir.index_type)})" + return f"index({ntype(ir.variable_right.type)})" if isinstance(ir, Member): return "member" # .format(ntype(ir._type)) if isinstance(ir, Length): return "length" if isinstance(ir, Binary): - return f"binary({str(ir.variable_left)}{str(ir.type)}{str(ir.variable_right)})" + return f"binary({encode_var_for_compare(ir.variable_left)}{ir.type}{encode_var_for_compare(ir.variable_right)})" if isinstance(ir, Unary): return f"unary({str(ir.type)})" if isinstance(ir, Condition): @@ -332,7 +332,7 @@ def encode_var_for_compare(var: Variable) -> str: # variables if isinstance(var, Constant): - return f"constant({ntype(var.type)})" + return f"constant({ntype(var.type)},{var.value})" if isinstance(var, SolidityVariableComposed): return f"solidity_variable_composed({var.name})" if isinstance(var, SolidityVariable): @@ -342,9 +342,16 @@ def encode_var_for_compare(var: Variable) -> str: if isinstance(var, ReferenceVariable): return f"reference({ntype(var.type)})" if isinstance(var, LocalVariable): - return f"local_solc_variable({var.location})" + return f"local_solc_variable({ntype(var.type)},{var.location})" if isinstance(var, StateVariable): - return f"state_solc_variable({ntype(var.type)})" + if not (var.is_constant or var.is_immutable): + try: + slot, _ = var.contract.compilation_unit.storage_layout_of(var.contract, var) + except KeyError: + slot = var.name + else: + slot = var.name + return f"state_solc_variable({ntype(var.type)},{slot})" if isinstance(var, LocalVariableInitFromTuple): return "local_variable_init_tuple" if isinstance(var, TupleVariable): From e85572824d593540e9dc6c8b40b1898538b003e6 Mon Sep 17 00:00:00 2001 From: Feist Josselin Date: Thu, 25 May 2023 12:07:31 +0200 Subject: [PATCH 166/220] - Move LoC features into utils.loc as they are now used by two printers - Remove the usage of dict and create LoC/LoCInfo dataclass to reduce complexity - Add to_pretty_table in LoC to reduce complexity - Use proper type (remove PEP 585 for python 3.8 support) --- slither/printers/all_printers.py | 2 +- slither/printers/summary/human_summary.py | 26 +++--- slither/printers/summary/loc.py | 106 ++-------------------- slither/utils/loc.py | 105 +++++++++++++++++++++ slither/utils/myprettytable.py | 39 -------- 5 files changed, 125 insertions(+), 153 deletions(-) create mode 100644 slither/utils/loc.py diff --git a/slither/printers/all_printers.py b/slither/printers/all_printers.py index 3dd64da3e..5555fe708 100644 --- a/slither/printers/all_printers.py +++ b/slither/printers/all_printers.py @@ -1,7 +1,7 @@ # pylint: disable=unused-import,relative-beyond-top-level from .summary.function import FunctionSummary from .summary.contract import ContractSummary -from .summary.loc import Loc +from .summary.loc import LocPrinter from .inheritance.inheritance import PrinterInheritance from .inheritance.inheritance_graph import PrinterInheritanceGraph from .call.call_graph import PrinterCallGraph diff --git a/slither/printers/summary/human_summary.py b/slither/printers/summary/human_summary.py index 157b8228a..314335ebf 100644 --- a/slither/printers/summary/human_summary.py +++ b/slither/printers/summary/human_summary.py @@ -163,7 +163,7 @@ class PrinterHumanSummary(AbstractPrinter): def _number_functions(contract): return len(contract.functions) - def _get_number_of_assembly_lines(self): + def _get_number_of_assembly_lines(self) -> int: total_asm_lines = 0 for contract in self.contracts: for function in contract.functions_declared: @@ -179,9 +179,7 @@ class PrinterHumanSummary(AbstractPrinter): return "Compilation non standard\n" return f"Compiled with {str(self.slither.crytic_compile.type)}\n" - def _number_contracts(self): - if self.slither.crytic_compile is None: - return len(self.slither.contracts), 0, 0 + def _number_contracts(self) -> Tuple[int, int, int]: contracts = self.slither.contracts deps = [c for c in contracts if c.is_from_dependency()] tests = [c for c in contracts if c.is_test] @@ -267,7 +265,7 @@ class PrinterHumanSummary(AbstractPrinter): "Proxy": contract.is_upgradeable_proxy, } - def _get_contracts(self, txt): + def _get_contracts(self, txt: str) -> str: ( number_contracts, number_contracts_deps, @@ -280,18 +278,18 @@ class PrinterHumanSummary(AbstractPrinter): txt += f"Number of contracts in tests : {number_contracts_tests}\n" return txt - def _get_number_lines(self, txt, results): - lines_dict = compute_loc_metrics(self.slither) + def _get_number_lines(self, txt: str, results: Dict) -> Tuple[str, Dict]: + loc = compute_loc_metrics(self.slither) txt += "Source lines of code (SLOC) in source files: " - txt += f"{lines_dict['src']['sloc']}\n" - if lines_dict["dep"]["sloc"] > 0: + txt += f"{loc.src.sloc}\n" + if loc.dep.sloc > 0: txt += "Source lines of code (SLOC) in dependencies: " - txt += f"{lines_dict['dep']['sloc']}\n" - if lines_dict["test"]["sloc"] > 0: + txt += f"{loc.dep.sloc}\n" + if loc.test.sloc > 0: txt += "Source lines of code (SLOC) in tests : " - txt += f"{lines_dict['test']['sloc']}\n" - results["number_lines"] = lines_dict["src"]["sloc"] - results["number_lines__dependencies"] = lines_dict["dep"]["sloc"] + txt += f"{loc.test.sloc}\n" + results["number_lines"] = loc.src.sloc + results["number_lines__dependencies"] = loc.dep.sloc total_asm_lines = self._get_number_of_assembly_lines() txt += f"Number of assembly lines: {total_asm_lines}\n" results["number_lines_assembly"] = total_asm_lines diff --git a/slither/printers/summary/loc.py b/slither/printers/summary/loc.py index 4ed9aa6ab..35bb20fc4 100644 --- a/slither/printers/summary/loc.py +++ b/slither/printers/summary/loc.py @@ -9,102 +9,13 @@ dep: dependency files test: test files """ -from pathlib import Path -from slither.printers.abstract_printer import AbstractPrinter -from slither.utils.myprettytable import transpose, make_pretty_table -from slither.utils.tests_pattern import is_test_file - - -def count_lines(contract_lines: list) -> tuple: - """Function to count and classify the lines of code in a contract. - Args: - contract_lines: list(str) representing the lines of a contract. - Returns: - tuple(int, int, int) representing (cloc, sloc, loc) - """ - multiline_comment = False - cloc = 0 - sloc = 0 - loc = 0 - - for line in contract_lines: - loc += 1 - stripped_line = line.strip() - if not multiline_comment: - if stripped_line.startswith("//"): - cloc += 1 - elif "/*" in stripped_line: - # Account for case where /* is followed by */ on the same line. - # If it is, then multiline_comment does not need to be set to True - start_idx = stripped_line.find("/*") - end_idx = stripped_line.find("*/", start_idx + 2) - if end_idx == -1: - multiline_comment = True - cloc += 1 - elif stripped_line: - sloc += 1 - else: - cloc += 1 - if "*/" in stripped_line: - multiline_comment = False - - return cloc, sloc, loc - -def _update_lines_dict(file_type: str, lines: list, lines_dict: dict) -> dict: - """An internal function used to update (mutate in place) the lines_dict. - Args: - file_type: str indicating "src" (source files), "dep" (dependency files), or "test" tests. - lines: list(str) representing the lines of a contract. - lines_dict: dict to be updated with this shape: - { - "src" : {"loc": 30, "sloc": 20, "cloc": 5}, # code in source files - "dep" : {"loc": 50, "sloc": 30, "cloc": 10}, # code in dependencies - "test": {"loc": 80, "sloc": 60, "cloc": 10}, # code in tests - } - Returns: - an updated lines_dict - """ - cloc, sloc, loc = count_lines(lines) - lines_dict[file_type]["loc"] += loc - lines_dict[file_type]["cloc"] += cloc - lines_dict[file_type]["sloc"] += sloc - return lines_dict - - -def compute_loc_metrics(slither) -> dict: - """Used to compute the lines of code metrics for a Slither object. - Args: - slither: A Slither object - Returns: - A new dict with the following shape: - { - "src" : {"loc": 30, "sloc": 20, "cloc": 5}, # code in source files - "dep" : {"loc": 50, "sloc": 30, "cloc": 10}, # code in dependencies - "test": {"loc": 80, "sloc": 60, "cloc": 10}, # code in tests - } - """ - - lines_dict = { - "src": {"loc": 0, "sloc": 0, "cloc": 0}, - "dep": {"loc": 0, "sloc": 0, "cloc": 0}, - "test": {"loc": 0, "sloc": 0, "cloc": 0}, - } - - if not slither.source_code: - return lines_dict - - for filename, source_code in slither.source_code.items(): - current_lines = source_code.splitlines() - is_dep = False - if slither.crytic_compile: - is_dep = slither.crytic_compile.is_dependency(filename) - file_type = "dep" if is_dep else "test" if is_test_file(Path(filename)) else "src" - lines_dict = _update_lines_dict(file_type, current_lines, lines_dict) - return lines_dict +from slither.printers.abstract_printer import AbstractPrinter +from slither.utils.loc import compute_loc_metrics +from slither.utils.output import Output -class Loc(AbstractPrinter): +class LocPrinter(AbstractPrinter): ARGUMENT = "loc" HELP = """Count the total number lines of code (LOC), source lines of code (SLOC), \ and comment lines of code (CLOC) found in source files (SRC), dependencies (DEP), \ @@ -112,14 +23,11 @@ class Loc(AbstractPrinter): WIKI = "https://github.com/trailofbits/slither/wiki/Printer-documentation#loc" - def output(self, _filename): + def output(self, _filename: str) -> Output: # compute loc metrics - lines_dict = compute_loc_metrics(self.slither) + loc = compute_loc_metrics(self.slither) - # prepare the table - headers = [""] + list(lines_dict.keys()) - report_dict = transpose(lines_dict) - table = make_pretty_table(headers, report_dict) + table = loc.to_pretty_table() txt = "Lines of Code \n" + str(table) self.info(txt) res = self.generate_output(txt) diff --git a/slither/utils/loc.py b/slither/utils/loc.py new file mode 100644 index 000000000..0e51dfa46 --- /dev/null +++ b/slither/utils/loc.py @@ -0,0 +1,105 @@ +from dataclasses import dataclass +from pathlib import Path +from typing import List, Tuple + +from slither import Slither +from slither.utils.myprettytable import MyPrettyTable +from slither.utils.tests_pattern import is_test_file + + +@dataclass +class LoCInfo: + loc: int = 0 + sloc: int = 0 + cloc: int = 0 + + def total(self) -> int: + return self.loc + self.sloc + self.cloc + + +@dataclass +class LoC: + src: LoCInfo = LoCInfo() + dep: LoCInfo = LoCInfo() + test: LoCInfo = LoCInfo() + + def to_pretty_table(self) -> MyPrettyTable: + table = MyPrettyTable(["", "src", "dep", "test"]) + + table.add_row(["loc", str(self.src.loc), str(self.dep.loc), str(self.test.loc)]) + table.add_row(["sloc", str(self.src.sloc), str(self.dep.sloc), str(self.test.sloc)]) + table.add_row(["cloc", str(self.src.cloc), str(self.dep.cloc), str(self.test.cloc)]) + table.add_row( + ["Total", str(self.src.total()), str(self.dep.total()), str(self.test.total())] + ) + return table + + +def count_lines(contract_lines: List[str]) -> Tuple[int, int, int]: + """Function to count and classify the lines of code in a contract. + Args: + contract_lines: list(str) representing the lines of a contract. + Returns: + tuple(int, int, int) representing (cloc, sloc, loc) + """ + multiline_comment = False + cloc = 0 + sloc = 0 + loc = 0 + + for line in contract_lines: + loc += 1 + stripped_line = line.strip() + if not multiline_comment: + if stripped_line.startswith("//"): + cloc += 1 + elif "/*" in stripped_line: + # Account for case where /* is followed by */ on the same line. + # If it is, then multiline_comment does not need to be set to True + start_idx = stripped_line.find("/*") + end_idx = stripped_line.find("*/", start_idx + 2) + if end_idx == -1: + multiline_comment = True + cloc += 1 + elif stripped_line: + sloc += 1 + else: + cloc += 1 + if "*/" in stripped_line: + multiline_comment = False + + return cloc, sloc, loc + + +def _update_lines(loc_info: LoCInfo, lines: list) -> None: + """An internal function used to update (mutate in place) the loc_info. + + Args: + loc_info: LoCInfo to be updated + lines: list(str) representing the lines of a contract. + """ + cloc, sloc, loc = count_lines(lines) + loc_info.loc += loc + loc_info.cloc += cloc + loc_info.sloc += sloc + + +def compute_loc_metrics(slither: Slither) -> LoC: + """Used to compute the lines of code metrics for a Slither object. + + Args: + slither: A Slither object + Returns: + A LoC object + """ + + loc = LoC() + + for filename, source_code in slither.source_code.items(): + current_lines = source_code.splitlines() + is_dep = False + if slither.crytic_compile: + is_dep = slither.crytic_compile.is_dependency(filename) + loc_type = loc.dep if is_dep else loc.test if is_test_file(Path(filename)) else loc.src + _update_lines(loc_type, current_lines) + return loc diff --git a/slither/utils/myprettytable.py b/slither/utils/myprettytable.py index 57e130884..2f2be7e72 100644 --- a/slither/utils/myprettytable.py +++ b/slither/utils/myprettytable.py @@ -22,42 +22,3 @@ class MyPrettyTable: def __str__(self) -> str: return str(self.to_pretty_table()) - - -# **Dict to MyPrettyTable utility functions** - - -# Converts a dict to a MyPrettyTable. Dict keys are the row headers. -# @param headers str[] of column names -# @param body dict of row headers with a dict of the values -# @param totals bool optional add Totals row -def make_pretty_table(headers: list, body: dict, totals: bool = False) -> MyPrettyTable: - table = MyPrettyTable(headers) - for row in body: - table_row = [row] + [body[row][key] for key in headers[1:]] - table.add_row(table_row) - if totals: - table.add_row(["Total"] + [sum([body[row][key] for row in body]) for key in headers[1:]]) - return table - - -# takes a dict of dicts and returns a dict of dicts with the keys transposed -# example: -# in: -# { -# "dep": {"loc": 0, "sloc": 0, "cloc": 0}, -# "test": {"loc": 0, "sloc": 0, "cloc": 0}, -# "src": {"loc": 0, "sloc": 0, "cloc": 0}, -# } -# out: -# { -# 'loc': {'dep': 0, 'test': 0, 'src': 0}, -# 'sloc': {'dep': 0, 'test': 0, 'src': 0}, -# 'cloc': {'dep': 0, 'test': 0, 'src': 0}, -# } -def transpose(table): - any_key = list(table.keys())[0] - return { - inner_key: {outer_key: table[outer_key][inner_key] for outer_key in table} - for inner_key in table[any_key] - } From 00461aad9a6c9205cbf826aa83f6c258609ade91 Mon Sep 17 00:00:00 2001 From: William E Bodell III Date: Fri, 2 Jun 2023 08:39:42 -0500 Subject: [PATCH 167/220] slither-read-storage native POA support (#1843) * Native support for POA networks in read_storage * Set `srs.rpc` before `srs.block` * Type hint * New RpcInfo class w/ RpcInfo.web3 and RpcInfo.block In SlitherReadStorage, self.rpc_info: Optional[RpcInfo] replaces self.rpc, self._block, self._web3 * Black * Update test_read_storage.py * Add import in __init__.py * Avoid instantiating SRS twice * Add comment about `get_block` for POA networks * Pylint * Black * Allow other valid block string arguments ["latest", "earliest", "pending", "safe", "finalized"] * `args.block` can be in ["latest", "earliest", "pending", "safe", "finalized"] * Use BlockTag enum class for valid `str` arguments * Tweak `RpcInfo.__init__()` signature * get rid of `or "latest"` * Import BlockTag * Use `web3.types.BlockIdentifier` * Revert BlockTag enum * Pylint and black * Replace missing newline * Update slither/tools/read_storage/__main__.py Better, cleaner python Co-authored-by: alpharush <0xalpharush@protonmail.com> * Drop try/except around args.block parsing allow ValueError if user provides invalid block arg * Remove unused import --------- Co-authored-by: alpharush <0xalpharush@protonmail.com> --- slither/tools/read_storage/__init__.py | 2 +- slither/tools/read_storage/__main__.py | 29 +++++----- slither/tools/read_storage/read_storage.py | 57 +++++++++++++------ tests/tools/read-storage/test_read_storage.py | 6 +- 4 files changed, 57 insertions(+), 37 deletions(-) diff --git a/slither/tools/read_storage/__init__.py b/slither/tools/read_storage/__init__.py index dbc1e5bc0..df9b8280d 100644 --- a/slither/tools/read_storage/__init__.py +++ b/slither/tools/read_storage/__init__.py @@ -1 +1 @@ -from .read_storage import SlitherReadStorage +from .read_storage import SlitherReadStorage, RpcInfo diff --git a/slither/tools/read_storage/__main__.py b/slither/tools/read_storage/__main__.py index 1a8901321..f6635ab4b 100644 --- a/slither/tools/read_storage/__main__.py +++ b/slither/tools/read_storage/__main__.py @@ -7,7 +7,7 @@ import argparse from crytic_compile import cryticparser from slither import Slither -from slither.tools.read_storage.read_storage import SlitherReadStorage +from slither.tools.read_storage.read_storage import SlitherReadStorage, RpcInfo def parse_args() -> argparse.Namespace: @@ -126,22 +126,19 @@ def main() -> None: else: contracts = slither.contracts - srs = SlitherReadStorage(contracts, args.max_depth) - - try: - srs.block = int(args.block) - except ValueError: - srs.block = str(args.block or "latest") - + rpc_info = None if args.rpc_url: - # Remove target prefix e.g. rinkeby:0x0 -> 0x0. - address = target[target.find(":") + 1 :] - # Default to implementation address unless a storage address is given. - if not args.storage_address: - args.storage_address = address - srs.storage_address = args.storage_address - - srs.rpc = args.rpc_url + valid = ["latest", "earliest", "pending", "safe", "finalized"] + block = args.block if args.block in valid else int(args.block) + rpc_info = RpcInfo(args.rpc_url, block) + + srs = SlitherReadStorage(contracts, args.max_depth, rpc_info) + # Remove target prefix e.g. rinkeby:0x0 -> 0x0. + address = target[target.find(":") + 1 :] + # Default to implementation address unless a storage address is given. + if not args.storage_address: + args.storage_address = address + srs.storage_address = args.storage_address if args.variable_name: # Use a lambda func to only return variables that have same name as target. diff --git a/slither/tools/read_storage/read_storage.py b/slither/tools/read_storage/read_storage.py index 2947081da..72331f66a 100644 --- a/slither/tools/read_storage/read_storage.py +++ b/slither/tools/read_storage/read_storage.py @@ -6,8 +6,11 @@ import dataclasses from eth_abi import decode, encode from eth_typing.evm import ChecksumAddress -from eth_utils import keccak +from eth_utils import keccak, to_checksum_address from web3 import Web3 +from web3.types import BlockIdentifier +from web3.exceptions import ExtraDataLengthError +from web3.middleware import geth_poa_middleware from slither.core.declarations import Contract, Structure from slither.core.solidity_types import ArrayType, ElementaryType, MappingType, UserDefinedType @@ -42,18 +45,43 @@ class SlitherReadStorageException(Exception): pass +class RpcInfo: + def __init__(self, rpc_url: str, block: BlockIdentifier = "latest") -> None: + assert isinstance(block, int) or block in [ + "latest", + "earliest", + "pending", + "safe", + "finalized", + ] + self.rpc: str = rpc_url + self._web3: Web3 = Web3(Web3.HTTPProvider(self.rpc)) + """If the RPC is for a POA network, the first call to get_block fails, so we inject geth_poa_middleware""" + try: + self._block: int = self.web3.eth.get_block(block)["number"] + except ExtraDataLengthError: + self._web3.middleware_onion.inject(geth_poa_middleware, layer=0) + self._block: int = self.web3.eth.get_block(block)["number"] + + @property + def web3(self) -> Web3: + return self._web3 + + @property + def block(self) -> int: + return self._block + + # pylint: disable=too-many-instance-attributes class SlitherReadStorage: - def __init__(self, contracts: List[Contract], max_depth: int) -> None: + def __init__(self, contracts: List[Contract], max_depth: int, rpc_info: RpcInfo = None) -> None: self._checksum_address: Optional[ChecksumAddress] = None self._contracts: List[Contract] = contracts self._log: str = "" self._max_depth: int = max_depth self._slot_info: Dict[str, SlotInfo] = {} self._target_variables: List[Tuple[Contract, StateVariable]] = [] - self._web3: Optional[Web3] = None - self.block: Union[str, int] = "latest" - self.rpc: Optional[str] = None + self.rpc_info: Optional[RpcInfo] = rpc_info self.storage_address: Optional[str] = None self.table: Optional[MyPrettyTable] = None @@ -73,18 +101,12 @@ class SlitherReadStorage: def log(self, log: str) -> None: self._log = log - @property - def web3(self) -> Web3: - if not self._web3: - self._web3 = Web3(Web3.HTTPProvider(self.rpc)) - return self._web3 - @property def checksum_address(self) -> ChecksumAddress: if not self.storage_address: raise ValueError if not self._checksum_address: - self._checksum_address = self.web3.to_checksum_address(self.storage_address) + self._checksum_address = to_checksum_address(self.storage_address) return self._checksum_address @property @@ -223,11 +245,12 @@ class SlitherReadStorage: """Fetches the slot value of `SlotInfo` object :param slot_info: """ + assert self.rpc_info is not None hex_bytes = get_storage_data( - self.web3, + self.rpc_info.web3, self.checksum_address, int.to_bytes(slot_info.slot, 32, byteorder="big"), - self.block, + self.rpc_info.block, ) slot_info.value = self.convert_value_to_type( hex_bytes, slot_info.size, slot_info.offset, slot_info.type_string @@ -600,15 +623,15 @@ class SlitherReadStorage: (int): The length of the array. """ val = 0 - if self.rpc: + if self.rpc_info: # The length of dynamic arrays is stored at the starting slot. # Convert from hexadecimal to decimal. val = int( get_storage_data( - self.web3, + self.rpc_info.web3, self.checksum_address, int.to_bytes(slot, 32, byteorder="big"), - self.block, + self.rpc_info.block, ).hex(), 16, ) diff --git a/tests/tools/read-storage/test_read_storage.py b/tests/tools/read-storage/test_read_storage.py index 6d2ab007d..ea04a91fe 100644 --- a/tests/tools/read-storage/test_read_storage.py +++ b/tests/tools/read-storage/test_read_storage.py @@ -12,7 +12,7 @@ from web3 import Web3 from web3.contract import Contract from slither import Slither -from slither.tools.read_storage import SlitherReadStorage +from slither.tools.read_storage import SlitherReadStorage, RpcInfo TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" @@ -105,8 +105,8 @@ def test_read_storage(web3, ganache, solc_binary_path) -> None: sl = Slither(Path(TEST_DATA_DIR, "storage_layout-0.8.10.sol").as_posix(), solc=solc_path) contracts = sl.contracts - srs = SlitherReadStorage(contracts, 100) - srs.rpc = ganache.provider + rpc_info: RpcInfo = RpcInfo(ganache.provider) + srs = SlitherReadStorage(contracts, 100, rpc_info) srs.storage_address = address srs.get_all_storage_variables() srs.get_storage_layout() From a82683139d46fca135299bc7c751aa48ea2c58b0 Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Fri, 2 Jun 2023 16:12:24 -0400 Subject: [PATCH 168/220] initial optimization --- slither/detectors/variables/similar_variables.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/slither/detectors/variables/similar_variables.py b/slither/detectors/variables/similar_variables.py index 465e1ce01..5db955241 100644 --- a/slither/detectors/variables/similar_variables.py +++ b/slither/detectors/variables/similar_variables.py @@ -47,9 +47,7 @@ class SimilarVarsDetection(AbstractDetector): Returns: bool: true if names are similar """ - if len(seq1) != len(seq2): - return False - val = difflib.SequenceMatcher(a=seq1.lower(), b=seq2.lower()).ratio() + val = difflib.SequenceMatcher(a=seq1, b=seq2).ratio() ret = val > 0.90 return ret @@ -69,11 +67,15 @@ class SimilarVarsDetection(AbstractDetector): ret = [] for v1 in all_var: + _len_v1 = len(v1.name) for v2 in all_var: - if v1.name.lower() != v2.name.lower(): - if SimilarVarsDetection.similar(v1.name, v2.name): - if (v2, v1) not in ret: - ret.append((v1, v2)) + if _len_v1 != len(v2.name): + continue + _v1_name_lower = v1.name.lower() + _v2_name_lower = v2.name.lower() + if _v1_name_lower != _v2_name_lower: + if SimilarVarsDetection.similar(_v1_name_lower, _v2_name_lower): + ret.append((v1, v2)) return set(ret) From 1b4c0b913727ff6306db9e6f7bb9a4cf0ff900c3 Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Fri, 2 Jun 2023 18:07:45 -0400 Subject: [PATCH 169/220] reduced num iterations in inner loop --- slither/detectors/variables/similar_variables.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/slither/detectors/variables/similar_variables.py b/slither/detectors/variables/similar_variables.py index 5db955241..8bd5b93d7 100644 --- a/slither/detectors/variables/similar_variables.py +++ b/slither/detectors/variables/similar_variables.py @@ -63,12 +63,14 @@ class SimilarVarsDetection(AbstractDetector): contract_var = contract.variables - all_var = set(all_var + contract_var) + all_var = list(set(all_var + contract_var)) ret = [] - for v1 in all_var: + for i in range(len(all_var)): + v1 = all_var[i] _len_v1 = len(v1.name) - for v2 in all_var: + for j in range(i,len(all_var)): + v2 = all_var[j] if _len_v1 != len(v2.name): continue _v1_name_lower = v1.name.lower() From 15e8ce9e330df30090a5ce82c1fbef0491ee6f1d Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Sat, 3 Jun 2023 07:15:57 -0400 Subject: [PATCH 170/220] remove changes to how similar() works --- .../detectors/variables/similar_variables.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/slither/detectors/variables/similar_variables.py b/slither/detectors/variables/similar_variables.py index 8bd5b93d7..7cb10cbd5 100644 --- a/slither/detectors/variables/similar_variables.py +++ b/slither/detectors/variables/similar_variables.py @@ -47,7 +47,9 @@ class SimilarVarsDetection(AbstractDetector): Returns: bool: true if names are similar """ - val = difflib.SequenceMatcher(a=seq1, b=seq2).ratio() + if len(seq1) != len(seq2): + return False + val = difflib.SequenceMatcher(a=seq1.lower(), b=seq2.lower()).ratio() ret = val > 0.90 return ret @@ -68,16 +70,13 @@ class SimilarVarsDetection(AbstractDetector): ret = [] for i in range(len(all_var)): v1 = all_var[i] - _len_v1 = len(v1.name) - for j in range(i,len(all_var)): + _v1_name_lower = v1.name.lower() + for j in range(i,len(all_var)): v2 = all_var[j] - if _len_v1 != len(v2.name): - continue - _v1_name_lower = v1.name.lower() - _v2_name_lower = v2.name.lower() - if _v1_name_lower != _v2_name_lower: - if SimilarVarsDetection.similar(_v1_name_lower, _v2_name_lower): - ret.append((v1, v2)) + if _v1_name_lower != v2.name.lower(): + if SimilarVarsDetection.similar(v1.name, v2.name): + if (v2, v1) not in ret: + ret.append((v1, v2)) return set(ret) From 173698d8e0b598ad2a79e5eab20db48bf601d898 Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Sat, 3 Jun 2023 11:55:54 -0400 Subject: [PATCH 171/220] linting --- slither/detectors/variables/similar_variables.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/slither/detectors/variables/similar_variables.py b/slither/detectors/variables/similar_variables.py index 7cb10cbd5..9f8eaaa2d 100644 --- a/slither/detectors/variables/similar_variables.py +++ b/slither/detectors/variables/similar_variables.py @@ -68,10 +68,11 @@ class SimilarVarsDetection(AbstractDetector): all_var = list(set(all_var + contract_var)) ret = [] + # pylint: disable=consider-using-enumerate for i in range(len(all_var)): v1 = all_var[i] _v1_name_lower = v1.name.lower() - for j in range(i,len(all_var)): + for j in range(i, len(all_var)): v2 = all_var[j] if _v1_name_lower != v2.name.lower(): if SimilarVarsDetection.similar(v1.name, v2.name): From 5f9abc2e89e8d49eb20a1d4b882ec98721b5381f Mon Sep 17 00:00:00 2001 From: A23187 <41769181+A-23187@users.noreply.github.com> Date: Sun, 4 Jun 2023 02:14:59 +0800 Subject: [PATCH 172/220] fix evm printer for solc > 0.6.0 (#1567) --- slither/analyses/evm/convert.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/analyses/evm/convert.py b/slither/analyses/evm/convert.py index bff308cbc..5e8c4a128 100644 --- a/slither/analyses/evm/convert.py +++ b/slither/analyses/evm/convert.py @@ -186,7 +186,7 @@ def generate_source_to_evm_ins_mapping(evm_instructions, srcmap_runtime, slither if mapping_item[i] == "": mapping_item[i] = int(prev_mapping[i]) - offset, _length, file_id, _ = mapping_item + offset, _length, file_id, *_ = mapping_item prev_mapping = mapping_item if file_id == "-1": From 0c27b000aa6d1ffd88439078af4086ee0cd12542 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Mon, 5 Jun 2023 09:22:27 -0500 Subject: [PATCH 173/220] add support for prevrando (solc 0.8.18) --- CONTRIBUTING.md | 2 +- slither/core/declarations/solidity_variables.py | 4 +++- slither/solc_parsing/yul/evm_functions.py | 3 +++ tests/e2e/solc_parsing/test_ast_parsing.py | 1 + ...lobal_variables-0.8.18.sol-0.8.18-compact.zip | Bin 0 -> 2023 bytes ...obal_variables-0.8.18.sol-0.8.18-compact.json | 6 ++++++ .../test_data/global_variables-0.8.18.sol | 11 +++++++++++ 7 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 tests/e2e/solc_parsing/test_data/compile/global_variables-0.8.18.sol-0.8.18-compact.zip create mode 100644 tests/e2e/solc_parsing/test_data/expected/global_variables-0.8.18.sol-0.8.18-compact.json create mode 100644 tests/e2e/solc_parsing/test_data/global_variables-0.8.18.sol diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1d1a9497f..c00fda8aa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -106,7 +106,7 @@ For each new detector, at least one regression tests must be present. > - To run tests for a specific test case, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py -k user_defined_value_type` (the filename is the argument). > - To run tests for a specific version, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py -k 0.8.12`. > - To run tests for a specific compiler json format, run `pytest tests/e2e/solc_parsing/test_ast_parsing.py -k legacy` (can be legacy or compact). -> - The IDs of tests can be inspected using ``pytest tests/e2e/solc_parsing/test_ast_parsing.py --collect-only`. +> - The IDs of tests can be inspected using `pytest tests/e2e/solc_parsing/test_ast_parsing.py --collect-only`. ### Synchronization with crytic-compile diff --git a/slither/core/declarations/solidity_variables.py b/slither/core/declarations/solidity_variables.py index 552cf9e7f..f6a0f0839 100644 --- a/slither/core/declarations/solidity_variables.py +++ b/slither/core/declarations/solidity_variables.py @@ -21,10 +21,11 @@ SOLIDITY_VARIABLES_COMPOSED = { "block.basefee": "uint", "block.coinbase": "address", "block.difficulty": "uint256", + "block.prevrandao": "uint256", "block.gaslimit": "uint256", "block.number": "uint256", "block.timestamp": "uint256", - "block.blockhash": "uint256", # alias for blockhash. It's a call + "block.blockhash": "bytes32", # alias for blockhash. It's a call "block.chainid": "uint256", "msg.data": "bytes", "msg.gas": "uint256", @@ -60,6 +61,7 @@ SOLIDITY_FUNCTIONS: Dict[str, List[str]] = { "log2(bytes32,bytes32,bytes32)": [], "log3(bytes32,bytes32,bytes32,bytes32)": [], "blockhash(uint256)": ["bytes32"], + "prevrandao()": ["uint256"], # the following need a special handling # as they are recognized as a SolidityVariableComposed # and converted to a SolidityFunction by SlithIR diff --git a/slither/solc_parsing/yul/evm_functions.py b/slither/solc_parsing/yul/evm_functions.py index dfb52a244..28ea70e93 100644 --- a/slither/solc_parsing/yul/evm_functions.py +++ b/slither/solc_parsing/yul/evm_functions.py @@ -51,6 +51,7 @@ evm_opcodes = [ "TIMESTAMP", "NUMBER", "DIFFICULTY", + "PREVRANDAO", "GASLIMIT", "CHAINID", "SELFBALANCE", @@ -168,6 +169,7 @@ builtins = [ ) ] + yul_funcs +# "identifier": [input_count, output_count] function_args = { "byte": [2, 1], "addmod": [3, 1], @@ -221,6 +223,7 @@ function_args = { "timestamp": [0, 1], "number": [0, 1], "difficulty": [0, 1], + "prevrandao": [0, 1], "gaslimit": [0, 1], } diff --git a/tests/e2e/solc_parsing/test_ast_parsing.py b/tests/e2e/solc_parsing/test_ast_parsing.py index a561343de..316f2cc38 100644 --- a/tests/e2e/solc_parsing/test_ast_parsing.py +++ b/tests/e2e/solc_parsing/test_ast_parsing.py @@ -308,6 +308,7 @@ ALL_TESTS = [ Test("units_and_global_variables-0.8.0.sol", VERSIONS_08), Test("units_and_global_variables-0.8.4.sol", make_version(8, 4, 6)), Test("units_and_global_variables-0.8.7.sol", make_version(8, 7, 9)), + Test("global_variables-0.8.18.sol", make_version(8, 18, 18)), Test( "push-all.sol", ALL_VERSIONS, diff --git a/tests/e2e/solc_parsing/test_data/compile/global_variables-0.8.18.sol-0.8.18-compact.zip b/tests/e2e/solc_parsing/test_data/compile/global_variables-0.8.18.sol-0.8.18-compact.zip new file mode 100644 index 0000000000000000000000000000000000000000..04dde0da9c01b3b5d61bed184e30c285e572dcdd GIT binary patch literal 2023 zcmb8wX&}=N0|)TmHb-TKa>TIY$dxk;WgCAL!rVfHEk_t8k!0nXE1L)*=fs~mQYngM z2uUqD|BhUV_qT3X>BoU*#)5@iApwf*vWXe?QYMHI;wy3OjdMbYv>Z>Dkr+TYY)y<) zAk3sKpyNePyfpvVb}eGHa>5v`q12ajpHwS;^jMNqUftu7ddNoas;#2#7Y(5^jMTTxyUTEcEN+Es#yzL4wJppOt-=qZ$3zdOOa`L6Yc5*c1?V* zLBc|XbaRS3Xirw9NbF2ouyokFw5pW+nkSU?aR(~Acv3|g2=6m+!q6b3i1?a8tV=RZ zE%erv%eYa&!e;EeY5vKwQ~{mdLDXL82V2%S+4MGeVOA!k{sm~+E-pLDjAQ+9-SG(d zK(^|I>U}%=_#}V(cVk}*&CAz}dfy%Hoj%pV8877Y!7SG&G!oiv*Dc-3@nSzR@*9=k zHhpWLFj(;oD{gu_Hj?x!x5 zuURqDb6Sn)nnoaD?l;a|XgcP`*Bon;?OC*I7_W9PX(Sd?jS@Rhf4HUZgs7K^hhFq>7Rqk`rpOB*nw!pU zMCrKJdJ2>ZyDwl=DqqG%V0wI5;i6$`L#9)19B}dVXXILroN0J^YFU)e3x?0v2c0^W zxgdyx*4R>7#7Xta#b0c?NFZ}q5@W3j?Kt^MXnlaLmiF^5_0ED!_w!6f{(jx_gRHgu zY`s07izK%en`PG0;0VflZ~3i%fh|~SYJ`3$-GyNo>y)~g-5S788>8pwGuB`p1_8-4 z@7~-xlCZ*c!P+_FN=?=5ha;f0GZkTWqkG8ZVqEQkJni531=1m7h)_{`3w3n#q5C(d z;v@qDL~U$A{ozgQ z`(*~NjvVYdXf3xPn>JezeM`@nXp)`b?5vbKLt|{Q35GTe_k+fK!}hNV(@!snq|Wb{ z?AXn`#TmY`n9BDIrh^-}33~lsvxj`SHI=>UYZ=4!#dCE{p0nPUjnUPGsC}m?Ui&ii zw*Dy!iMeOBd%TqU9bQB$f8jXYVbYrT%ro%lg!zwPXVr{<ump%om zej+p!arKaqBqHQy(R&dEUA2lOm;n-WR*!3L{W*S0?*j(B!~YPRVsxedvYwW95sL>8 zC-+nBE*d=&Al}wm4CYVFI6tZ+&#q1T?3$25T(LfJZS%|bCriy+P1k=7eF)8YVW~Ce zi?}W{V8kGOFYguuxq3WL98~DT7EiFQxwkom#?NQJX>tF#RkVgG>$8kBq<}cr83RK% zskZmu(?n^?3D&M~j~Tke=XbRVNQKXXx4p05G%-geiyPy-j0~5d3e9b!(pM8c;U$IX zk8@G~2!ey=>cAz*AuNj+-Aw-`n1z!=?%P)(R`4q2b{J32%5kRHMoE=*^E!-D@-QUu zx5x+63&QI>tVSl9Q;}_;B+1Wncd}UPTYJnUoUhIllmP~`1_)HwN2=6unZZ1z%X|^? zVs2;y@e_DLkr-P+(F5^oxgT+Zuewxyue3Mq1}61w5KlMx_2g#f`~eDF47*)02Q@md z_43V75y9WS>f&5(qFhIfI^Me<#H`KJ5^rm*mayCrhZM}#ox1cP@8<=qHQ}&~K9q8_ zCMq&akR`BK2@5xgVmza;pr4qpW5Q>jtcA9mJBmeYrayAGDVd=;Z}eET&8|>dqR*}x zOH@l^TMO(YF$CAR(()_keKWh_@*BI3W89G6@;Z>~c~(R4EBL2kP9A8%%Ek(`Uo)F` z$~o^r@+(h$c}Hp7ooiRyRWxx?PXVwtl1;\n1[label=\"Node Type: RETURN 1\n\"];\n}\n", + "g()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/global_variables-0.8.18.sol b/tests/e2e/solc_parsing/test_data/global_variables-0.8.18.sol new file mode 100644 index 000000000..f21ae5d8f --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/global_variables-0.8.18.sol @@ -0,0 +1,11 @@ +contract C { + function f() public view returns (uint256) { + return block.prevrandao; + } + + function g() public view returns (uint256 ret) { + assembly { + ret := prevrandao() + } + } +} \ No newline at end of file From 30a4428e6bf65975ba1330ded69e8eb2ec246829 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Wed, 7 Jun 2023 07:42:03 -0500 Subject: [PATCH 174/220] use current scope instead of parent scope to determine if arith. is checked --- slither/core/cfg/scope.py | 6 +- slither/solc_parsing/declarations/function.py | 139 +++++++----------- 2 files changed, 56 insertions(+), 89 deletions(-) diff --git a/slither/core/cfg/scope.py b/slither/core/cfg/scope.py index d3ac4e836..3f9959851 100644 --- a/slither/core/cfg/scope.py +++ b/slither/core/cfg/scope.py @@ -7,8 +7,10 @@ if TYPE_CHECKING: # pylint: disable=too-few-public-methods class Scope: - def __init__(self, is_checked: bool, is_yul: bool, scope: Union["Scope", "Function"]) -> None: + def __init__( + self, is_checked: bool, is_yul: bool, parent_scope: Union["Scope", "Function"] + ) -> None: self.nodes: List["Node"] = [] self.is_checked = is_checked self.is_yul = is_yul - self.father = scope + self.father = parent_scope diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index 5a29a9b50..af87892bc 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -354,7 +354,7 @@ class FunctionSolc(CallerContextExpression): ################################################################################### ################################################################################### - def _parse_if(self, if_statement: Dict, node: NodeSolc) -> NodeSolc: + def _parse_if(self, if_statement: Dict, node: NodeSolc, scope: Scope) -> NodeSolc: # IfStatement = 'if' '(' Expression ')' Statement ( 'else' Statement )? falseStatement = None @@ -362,21 +362,15 @@ class FunctionSolc(CallerContextExpression): condition = if_statement["condition"] # Note: check if the expression could be directly # parsed here - condition_node = self._new_node( - NodeType.IF, condition["src"], node.underlying_node.scope - ) + condition_node = self._new_node(NodeType.IF, condition["src"], scope) condition_node.add_unparsed_expression(condition) link_underlying_nodes(node, condition_node) - true_scope = Scope( - node.underlying_node.scope.is_checked, False, node.underlying_node.scope - ) + true_scope = Scope(scope.is_checked, False, scope) trueStatement = self._parse_statement( if_statement["trueBody"], condition_node, true_scope ) if "falseBody" in if_statement and if_statement["falseBody"]: - false_scope = Scope( - node.underlying_node.scope.is_checked, False, node.underlying_node.scope - ) + false_scope = Scope(scope.is_checked, False, scope) falseStatement = self._parse_statement( if_statement["falseBody"], condition_node, false_scope ) @@ -385,22 +379,16 @@ class FunctionSolc(CallerContextExpression): condition = children[0] # Note: check if the expression could be directly # parsed here - condition_node = self._new_node( - NodeType.IF, condition["src"], node.underlying_node.scope - ) + condition_node = self._new_node(NodeType.IF, condition["src"], scope) condition_node.add_unparsed_expression(condition) link_underlying_nodes(node, condition_node) - true_scope = Scope( - node.underlying_node.scope.is_checked, False, node.underlying_node.scope - ) + true_scope = Scope(scope.is_checked, False, scope) trueStatement = self._parse_statement(children[1], condition_node, true_scope) if len(children) == 3: - false_scope = Scope( - node.underlying_node.scope.is_checked, False, node.underlying_node.scope - ) + false_scope = Scope(scope.is_checked, False, scope) falseStatement = self._parse_statement(children[2], condition_node, false_scope) - endIf_node = self._new_node(NodeType.ENDIF, if_statement["src"], node.underlying_node.scope) + endIf_node = self._new_node(NodeType.ENDIF, if_statement["src"], scope) link_underlying_nodes(trueStatement, endIf_node) if falseStatement: @@ -409,32 +397,26 @@ class FunctionSolc(CallerContextExpression): link_underlying_nodes(condition_node, endIf_node) return endIf_node - def _parse_while(self, whilte_statement: Dict, node: NodeSolc) -> NodeSolc: + def _parse_while(self, whilte_statement: Dict, node: NodeSolc, scope: Scope) -> NodeSolc: # WhileStatement = 'while' '(' Expression ')' Statement - node_startWhile = self._new_node( - NodeType.STARTLOOP, whilte_statement["src"], node.underlying_node.scope - ) + node_startWhile = self._new_node(NodeType.STARTLOOP, whilte_statement["src"], scope) - body_scope = Scope(node.underlying_node.scope.is_checked, False, node.underlying_node.scope) + body_scope = Scope(scope.is_checked, False, scope) if self.is_compact_ast: node_condition = self._new_node( - NodeType.IFLOOP, whilte_statement["condition"]["src"], node.underlying_node.scope + NodeType.IFLOOP, whilte_statement["condition"]["src"], scope ) node_condition.add_unparsed_expression(whilte_statement["condition"]) statement = self._parse_statement(whilte_statement["body"], node_condition, body_scope) else: children = whilte_statement[self.get_children("children")] expression = children[0] - node_condition = self._new_node( - NodeType.IFLOOP, expression["src"], node.underlying_node.scope - ) + node_condition = self._new_node(NodeType.IFLOOP, expression["src"], scope) node_condition.add_unparsed_expression(expression) statement = self._parse_statement(children[1], node_condition, body_scope) - node_endWhile = self._new_node( - NodeType.ENDLOOP, whilte_statement["src"], node.underlying_node.scope - ) + node_endWhile = self._new_node(NodeType.ENDLOOP, whilte_statement["src"], scope) link_underlying_nodes(node, node_startWhile) link_underlying_nodes(node_startWhile, node_condition) @@ -562,7 +544,7 @@ class FunctionSolc(CallerContextExpression): return pre, cond, post, body - def _parse_for(self, statement: Dict, node: NodeSolc) -> NodeSolc: + def _parse_for(self, statement: Dict, node: NodeSolc, scope: Scope) -> NodeSolc: # ForStatement = 'for' '(' (SimpleStatement)? ';' (Expression)? ';' (ExpressionStatement)? ')' Statement if self.is_compact_ast: @@ -570,17 +552,13 @@ class FunctionSolc(CallerContextExpression): else: pre, cond, post, body = self._parse_for_legacy_ast(statement) - node_startLoop = self._new_node( - NodeType.STARTLOOP, statement["src"], node.underlying_node.scope - ) - node_endLoop = self._new_node( - NodeType.ENDLOOP, statement["src"], node.underlying_node.scope - ) + node_startLoop = self._new_node(NodeType.STARTLOOP, statement["src"], scope) + node_endLoop = self._new_node(NodeType.ENDLOOP, statement["src"], scope) - last_scope = node.underlying_node.scope + last_scope = scope if pre: - pre_scope = Scope(node.underlying_node.scope.is_checked, False, last_scope) + pre_scope = Scope(scope.is_checked, False, last_scope) last_scope = pre_scope node_init_expression = self._parse_statement(pre, node, pre_scope) link_underlying_nodes(node_init_expression, node_startLoop) @@ -588,7 +566,7 @@ class FunctionSolc(CallerContextExpression): link_underlying_nodes(node, node_startLoop) if cond: - cond_scope = Scope(node.underlying_node.scope.is_checked, False, last_scope) + cond_scope = Scope(scope.is_checked, False, last_scope) last_scope = cond_scope node_condition = self._new_node(NodeType.IFLOOP, cond["src"], cond_scope) node_condition.add_unparsed_expression(cond) @@ -599,7 +577,7 @@ class FunctionSolc(CallerContextExpression): node_condition = None node_beforeBody = node_startLoop - body_scope = Scope(node.underlying_node.scope.is_checked, False, last_scope) + body_scope = Scope(scope.is_checked, False, last_scope) last_scope = body_scope node_body = self._parse_statement(body, node_beforeBody, body_scope) @@ -619,14 +597,10 @@ class FunctionSolc(CallerContextExpression): return node_endLoop - def _parse_dowhile(self, do_while_statement: Dict, node: NodeSolc) -> NodeSolc: + def _parse_dowhile(self, do_while_statement: Dict, node: NodeSolc, scope: Scope) -> NodeSolc: - node_startDoWhile = self._new_node( - NodeType.STARTLOOP, do_while_statement["src"], node.underlying_node.scope - ) - condition_scope = Scope( - node.underlying_node.scope.is_checked, False, node.underlying_node.scope - ) + node_startDoWhile = self._new_node(NodeType.STARTLOOP, do_while_statement["src"], scope) + condition_scope = Scope(scope.is_checked, False, scope) if self.is_compact_ast: node_condition = self._new_node( @@ -644,7 +618,7 @@ class FunctionSolc(CallerContextExpression): node_condition.add_unparsed_expression(expression) statement = self._parse_statement(children[1], node_condition, condition_scope) - body_scope = Scope(node.underlying_node.scope.is_checked, False, condition_scope) + body_scope = Scope(scope.is_checked, False, condition_scope) node_endDoWhile = self._new_node(NodeType.ENDLOOP, do_while_statement["src"], body_scope) link_underlying_nodes(node, node_startDoWhile) @@ -660,29 +634,27 @@ class FunctionSolc(CallerContextExpression): link_underlying_nodes(node_condition, node_endDoWhile) return node_endDoWhile - def _parse_try_catch(self, statement: Dict, node: NodeSolc) -> NodeSolc: + def _parse_try_catch(self, statement: Dict, node: NodeSolc, scope: Scope) -> NodeSolc: externalCall = statement.get("externalCall", None) if externalCall is None: raise ParsingError(f"Try/Catch not correctly parsed by Slither {statement}") - catch_scope = Scope( - node.underlying_node.scope.is_checked, False, node.underlying_node.scope - ) + catch_scope = Scope(scope.is_checked, False, scope) new_node = self._new_node(NodeType.TRY, statement["src"], catch_scope) new_node.add_unparsed_expression(externalCall) link_underlying_nodes(node, new_node) node = new_node for clause in statement.get("clauses", []): - self._parse_catch(clause, node) + self._parse_catch(clause, node, scope) return node - def _parse_catch(self, statement: Dict, node: NodeSolc) -> NodeSolc: + def _parse_catch(self, statement: Dict, node: NodeSolc, scope: Scope) -> NodeSolc: block = statement.get("block", None) if block is None: raise ParsingError(f"Catch not correctly parsed by Slither {statement}") - try_scope = Scope(node.underlying_node.scope.is_checked, False, node.underlying_node.scope) + try_scope = Scope(scope.is_checked, False, scope) try_node = self._new_node(NodeType.CATCH, statement["src"], try_scope) link_underlying_nodes(node, try_node) @@ -699,7 +671,7 @@ class FunctionSolc(CallerContextExpression): return self._parse_statement(block, try_node, try_scope) - def _parse_variable_definition(self, statement: Dict, node: NodeSolc) -> NodeSolc: + def _parse_variable_definition(self, statement: Dict, node: NodeSolc, scope: Scope) -> NodeSolc: try: local_var = LocalVariable() local_var.set_function(self._function) @@ -709,9 +681,7 @@ class FunctionSolc(CallerContextExpression): self._add_local_variable(local_var_parser) # local_var.analyze(self) - new_node = self._new_node( - NodeType.VARIABLE, statement["src"], node.underlying_node.scope - ) + new_node = self._new_node(NodeType.VARIABLE, statement["src"], scope) new_node.underlying_node.add_variable_declaration(local_var) link_underlying_nodes(node, new_node) return new_node @@ -741,7 +711,7 @@ class FunctionSolc(CallerContextExpression): "declarations": [variable], "initialValue": init, } - new_node = self._parse_variable_definition(new_statement, new_node) + new_node = self._parse_variable_definition(new_statement, new_node, scope) else: # If we have @@ -763,7 +733,7 @@ class FunctionSolc(CallerContextExpression): variables.append(variable) new_node = self._parse_variable_definition_init_tuple( - new_statement, i, new_node + new_statement, i, new_node, scope ) i = i + 1 @@ -795,9 +765,7 @@ class FunctionSolc(CallerContextExpression): "typeDescriptions": {"typeString": "tuple()"}, } node = new_node - new_node = self._new_node( - NodeType.EXPRESSION, statement["src"], node.underlying_node.scope - ) + new_node = self._new_node(NodeType.EXPRESSION, statement["src"], scope) new_node.add_unparsed_expression(expression) link_underlying_nodes(node, new_node) @@ -877,16 +845,14 @@ class FunctionSolc(CallerContextExpression): ], } node = new_node - new_node = self._new_node( - NodeType.EXPRESSION, statement["src"], node.underlying_node.scope - ) + new_node = self._new_node(NodeType.EXPRESSION, statement["src"], scope) new_node.add_unparsed_expression(expression) link_underlying_nodes(node, new_node) return new_node def _parse_variable_definition_init_tuple( - self, statement: Dict, index: int, node: NodeSolc + self, statement: Dict, index: int, node: NodeSolc, scope ) -> NodeSolc: local_var = LocalVariableInitFromTuple() local_var.set_function(self._function) @@ -896,7 +862,7 @@ class FunctionSolc(CallerContextExpression): self._add_local_variable(local_var_parser) - new_node = self._new_node(NodeType.VARIABLE, statement["src"], node.underlying_node.scope) + new_node = self._new_node(NodeType.VARIABLE, statement["src"], scope) new_node.underlying_node.add_variable_declaration(local_var) link_underlying_nodes(node, new_node) return new_node @@ -917,15 +883,15 @@ class FunctionSolc(CallerContextExpression): name = statement[self.get_key()] # SimpleStatement = VariableDefinition | ExpressionStatement if name == "IfStatement": - node = self._parse_if(statement, node) + node = self._parse_if(statement, node, scope) elif name == "WhileStatement": - node = self._parse_while(statement, node) + node = self._parse_while(statement, node, scope) elif name == "ForStatement": - node = self._parse_for(statement, node) + node = self._parse_for(statement, node, scope) elif name == "Block": - node = self._parse_block(statement, node) + node = self._parse_block(statement, node, scope) elif name == "UncheckedBlock": - node = self._parse_unchecked_block(statement, node) + node = self._parse_unchecked_block(statement, node, scope) elif name == "InlineAssembly": # Added with solc 0.6 - the yul code is an AST if "AST" in statement and not self.compilation_unit.core.skip_assembly: @@ -947,7 +913,7 @@ class FunctionSolc(CallerContextExpression): link_underlying_nodes(node, asm_node) node = asm_node elif name == "DoWhileStatement": - node = self._parse_dowhile(statement, node) + node = self._parse_dowhile(statement, node, scope) # For Continue / Break / Return / Throw # The is fixed later elif name == "Continue": @@ -988,7 +954,7 @@ class FunctionSolc(CallerContextExpression): link_underlying_nodes(node, new_node) node = new_node elif name in ["VariableDefinitionStatement", "VariableDeclarationStatement"]: - node = self._parse_variable_definition(statement, node) + node = self._parse_variable_definition(statement, node, scope) elif name == "ExpressionStatement": # assert len(statement[self.get_children('expression')]) == 1 # assert not 'attributes' in statement @@ -1002,7 +968,7 @@ class FunctionSolc(CallerContextExpression): link_underlying_nodes(node, new_node) node = new_node elif name == "TryStatement": - node = self._parse_try_catch(statement, node) + node = self._parse_try_catch(statement, node, scope) # elif name == 'TryCatchClause': # self._parse_catch(statement, node) elif name == "RevertStatement": @@ -1019,7 +985,7 @@ class FunctionSolc(CallerContextExpression): return node - def _parse_block(self, block: Dict, node: NodeSolc, check_arithmetic: bool = False) -> NodeSolc: + def _parse_block(self, block: Dict, node: NodeSolc, scope: Scope) -> NodeSolc: """ Return: Node @@ -1031,13 +997,12 @@ class FunctionSolc(CallerContextExpression): else: statements = block[self.get_children("children")] - check_arithmetic = check_arithmetic | node.underlying_node.scope.is_checked - new_scope = Scope(check_arithmetic, False, node.underlying_node.scope) + new_scope = Scope(scope.is_checked, False, scope) for statement in statements: node = self._parse_statement(statement, node, new_scope) return node - def _parse_unchecked_block(self, block: Dict, node: NodeSolc): + def _parse_unchecked_block(self, block: Dict, node: NodeSolc, scope): """ Return: Node @@ -1049,7 +1014,8 @@ class FunctionSolc(CallerContextExpression): else: statements = block[self.get_children("children")] - new_scope = Scope(False, False, node.underlying_node.scope) + new_scope = Scope(False, False, scope) + for statement in statements: node = self._parse_statement(statement, node, new_scope) return node @@ -1070,8 +1036,7 @@ class FunctionSolc(CallerContextExpression): self._function.is_empty = True else: self._function.is_empty = False - check_arithmetic = self.compilation_unit.solc_version >= "0.8.0" - self._parse_block(cfg, node, check_arithmetic=check_arithmetic) + self._parse_block(cfg, node, self.underlying_function) self._remove_incorrect_edges() self._remove_alone_endif() From 831b3b2d5d1578e47c531f2dc62ed0b3df4180e0 Mon Sep 17 00:00:00 2001 From: Tigran Avagyan <60320285+Tiko7454@users.noreply.github.com> Date: Wed, 7 Jun 2023 22:00:15 +0400 Subject: [PATCH 175/220] local variable location fix (#1942) * Local variable location fix When we had a function f() which returns a pair, the result passed to local variables didn't initialize the location attribute. For example: contract A { function f() public returns (int, bytes memory) { return (1, "asdf"); } function g() public { (int x, bytes memory y) = f(); } } the location of the local variable x as well as the location of the local variable y was None * moved the fixes to the proper file * removed useless newlines --- .../local_variable_init_from_tuple.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/slither/solc_parsing/variables/local_variable_init_from_tuple.py b/slither/solc_parsing/variables/local_variable_init_from_tuple.py index 1a551c695..f1c872848 100644 --- a/slither/solc_parsing/variables/local_variable_init_from_tuple.py +++ b/slither/solc_parsing/variables/local_variable_init_from_tuple.py @@ -16,3 +16,21 @@ class LocalVariableInitFromTupleSolc(VariableDeclarationSolc): # Todo: Not sure how to overcome this with mypy assert isinstance(self._variable, LocalVariableInitFromTuple) return self._variable + + def _analyze_variable_attributes(self, attributes: Dict) -> None: + """' + Variable Location + Can be storage/memory or default + """ + if "storageLocation" in attributes: + location = attributes["storageLocation"] + self.underlying_variable.set_location(location) + else: + if "memory" in attributes["type"]: + self.underlying_variable.set_location("memory") + elif "storage" in attributes["type"]: + self.underlying_variable.set_location("storage") + else: + self.underlying_variable.set_location("default") + + super()._analyze_variable_attributes(attributes) From 3ed6dee1a374d02212d0ff288e57c0e5442dcf0e Mon Sep 17 00:00:00 2001 From: Kevin Clancy Date: Wed, 7 Jun 2023 15:50:07 -0700 Subject: [PATCH 176/220] fix: make _convert_to_structure_to_list return a type instead of an ElementaryType's `type` field (#1935) * make _convert_to_structure_to_list return a type instead of an elementary type's type field * fix pylint warning preventing me from using elif after a return * re-arranged the assert and isinstance check * removed extra colon * reformatted --- slither/slithir/convert.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/slither/slithir/convert.py b/slither/slithir/convert.py index 665a7c8f9..63c3745eb 100644 --- a/slither/slithir/convert.py +++ b/slither/slithir/convert.py @@ -1583,7 +1583,9 @@ def _convert_to_structure_to_list(return_type: Type) -> List[Type]: # } if isinstance(return_type, (MappingType, ArrayType)): return [] - return [return_type.type] + + assert isinstance(return_type, (ElementaryType, UserDefinedType, TypeAlias)) + return [return_type] def convert_type_of_high_and_internal_level_call( From adabce6180522059d25ced40b260c121eded0d4e Mon Sep 17 00:00:00 2001 From: Simone <79767264+smonicas@users.noreply.github.com> Date: Thu, 8 Jun 2023 19:47:53 +0200 Subject: [PATCH 177/220] Detect when ether is sent in Yul (#1909) * Detect when ether is sent in Yul * address pylint warning instead of supressing * fix guard clause * remove branch to appease pylint * check that call can send eth prior to reading args --------- Co-authored-by: alpharush <0xalpharush@protonmail.com> --- slither/detectors/attributes/locked_ether.py | 28 ++++++++++++++++-- ...LockedEther_0_4_25_locked_ether_sol__0.txt | 7 ++++- ...LockedEther_0_5_16_locked_ether_sol__0.txt | 7 ++++- ...LockedEther_0_6_11_locked_ether_sol__0.txt | 2 +- ..._LockedEther_0_7_6_locked_ether_sol__0.txt | 2 +- .../locked-ether/0.4.25/locked_ether.sol | 11 +++++++ .../0.4.25/locked_ether.sol-0.4.25.zip | Bin 3082 -> 3497 bytes .../locked-ether/0.5.16/locked_ether.sol | 11 +++++++ .../0.5.16/locked_ether.sol-0.5.16.zip | Bin 3063 -> 3457 bytes .../locked-ether/0.6.11/locked_ether.sol | 10 +++++++ .../0.6.11/locked_ether.sol-0.6.11.zip | Bin 3078 -> 3560 bytes .../locked-ether/0.7.6/locked_ether.sol | 10 +++++++ .../0.7.6/locked_ether.sol-0.7.6.zip | Bin 2998 -> 3478 bytes 13 files changed, 81 insertions(+), 7 deletions(-) diff --git a/slither/detectors/attributes/locked_ether.py b/slither/detectors/attributes/locked_ether.py index a6f882922..91ec68650 100644 --- a/slither/detectors/attributes/locked_ether.py +++ b/slither/detectors/attributes/locked_ether.py @@ -3,7 +3,7 @@ """ from typing import List -from slither.core.declarations.contract import Contract +from slither.core.declarations import Contract, SolidityFunction from slither.detectors.abstract_detector import ( AbstractDetector, DetectorClassification, @@ -17,7 +17,9 @@ from slither.slithir.operations import ( NewContract, LibraryCall, InternalCall, + SolidityCall, ) +from slither.slithir.variables import Constant from slither.utils.output import Output @@ -68,8 +70,28 @@ Every Ether sent to `Locked` will be lost.""" ): if ir.call_value and ir.call_value != 0: return False - if isinstance(ir, (LowLevelCall)): - if ir.function_name in ["delegatecall", "callcode"]: + if isinstance(ir, (LowLevelCall)) and ir.function_name in [ + "delegatecall", + "callcode", + ]: + return False + if isinstance(ir, SolidityCall): + call_can_send_ether = ir.function in [ + SolidityFunction( + "delegatecall(uint256,uint256,uint256,uint256,uint256,uint256)" + ), + SolidityFunction( + "callcode(uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + ), + SolidityFunction( + "call(uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + ), + ] + nonzero_call_value = call_can_send_ether and ( + not isinstance(ir.arguments[2], Constant) + or ir.arguments[2].value != 0 + ) + if nonzero_call_value: return False # If a new internal call or librarycall # Add it to the list to explore diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_4_25_locked_ether_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_4_25_locked_ether_sol__0.txt index edca6eb2e..680f77d0d 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_4_25_locked_ether_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_4_25_locked_ether_sol__0.txt @@ -1,5 +1,10 @@ Contract locking ether found: - Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#26) has payable functions: + Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#37) has payable functions: + - Locked.receive() (tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#4-6) + But does not have a function to withdraw the ether + +Contract locking ether found: + Contract UnlockedAssembly (tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#27-35) has payable functions: - Locked.receive() (tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol#4-6) But does not have a function to withdraw the ether diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_5_16_locked_ether_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_5_16_locked_ether_sol__0.txt index d1ff3314b..961ba8c48 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_5_16_locked_ether_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_5_16_locked_ether_sol__0.txt @@ -1,5 +1,10 @@ Contract locking ether found: - Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#26) has payable functions: + Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#37) has payable functions: + - Locked.receive() (tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#4-6) + But does not have a function to withdraw the ether + +Contract locking ether found: + Contract UnlockedAssembly (tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#27-35) has payable functions: - Locked.receive() (tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol#4-6) But does not have a function to withdraw the ether diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_6_11_locked_ether_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_6_11_locked_ether_sol__0.txt index 212015c29..079104879 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_6_11_locked_ether_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_6_11_locked_ether_sol__0.txt @@ -1,5 +1,5 @@ Contract locking ether found: - Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol#26) has payable functions: + Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol#36) has payable functions: - Locked.receive_eth() (tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol#4-6) But does not have a function to withdraw the ether diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_7_6_locked_ether_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_7_6_locked_ether_sol__0.txt index 8b6ddfa59..14835871f 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_7_6_locked_ether_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_LockedEther_0_7_6_locked_ether_sol__0.txt @@ -1,5 +1,5 @@ Contract locking ether found: - Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol#26) has payable functions: + Contract OnlyLocked (tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol#36) has payable functions: - Locked.receive_eth() (tests/e2e/detectors/test_data/locked-ether/0.7.6/locked_ether.sol#4-6) But does not have a function to withdraw the ether diff --git a/tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol b/tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol index 65942ed2e..f3be911be 100644 --- a/tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol +++ b/tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol @@ -23,4 +23,15 @@ contract Unlocked is Locked, Send{ } +// Still reported because solidity < 0.6.0 doesn't have assembly in the AST +contract UnlockedAssembly is Locked{ + + function withdraw() public { + assembly { + let success := call(gas(), caller(),100,0,0,0,0) + } + } + +} + contract OnlyLocked is Locked{ } diff --git a/tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol-0.4.25.zip b/tests/e2e/detectors/test_data/locked-ether/0.4.25/locked_ether.sol-0.4.25.zip index b6092ecdb88e0c093fca52733727fc3c9715fc5e..e3e6f6c2193b35ead58cb3ceb458bdeac28bca9e 100644 GIT binary patch delta 3388 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 S007)wle`N^20;w~00006^P}bf delta 2969 zcmV;K3ug4G8;TekP)h>@KL7#%4gfZdcUGwag~(tF007`l001PDYz-%oLMngpM-PRi zm0nlZdjJq|?-l5q5W}VAK!X$~yhYNz{x3$S;g((ndY>|}t(QfD>0DX%3?)eh2qMDV z%C@wv9=7dQwIh!2zm5U0T8cs0s5KJCc6PbrL z6p`Gd#^laN}4z1j;Ewe&CIpcnVR?t$XFn2lc$z7nS6g5di!6A9MSbP zZpc9JVUJ#%*cxGdXxJo`;PWqvjO1_mne0P}ezM|cw0rK)jLu2>b$fzQ$*Pui_VHKN zfg~2_YRmZ(AbODMz_sRUt?+Wb(Pqi|xjjM;7i(6*G`Xu|W`9u=!eEG-_=$V7h!QNX zs(+D1&ILyzF8F|O%Upl`Of&=_XkB>|#CLI%D^lfc#@otO1McjQme0L^6L7p8!%iuX z6C`rcP^iFydQPlnk)LV17oOi%2-cV3>Q*h-g6L&jvxbH7wBCz99}Hj04I9DBGbLGb zpb>l|xX^CE0#-|!nhq0!QD~Wwi3DvoJi3Y2t|xd~m(0Tar7;B`_{{r2yRfJ zA@?BL**}V)N-uu`bR`=0{#IAG_Shvhpxjrfxxuf;OcLN8G01xK=yXg&H8Ln4mxQ08 zKnuj@zjg?*Ss;p69E3CN3QEjl&0@l{*P9A^v;_z6OF{3AdCJ7B1<*HofAc!vCi;Bk zIV_%QS9ec%%B&O2XD`AbO{E8b7dE2um=oHrPDo=k@cw90Es4j6`Tqe7DK^2^!TJO_`QeWPSD2_=T%%BE6&?Mgvo8l~b;Y=jggxaamejFb;kmb! zjB`K%%t%$@bYVA(3uS@f78@Yf_nTSDJV&coz9c+5hLSv-3q%@H;@huGq^1ck?+JzS zLr$o2ajK$Hd$f7#^y;DfJS-CTw$GJgeUE?DYXF6;O{yZ1BUQ^`QK4U#lx>lZ9l*~S z1fF7ZCWFTIa}QuHE+V-bcWroMk&tR!ZvHU#yF)iVhL$Wvb-ZGQR)IzmWMzs;Mu&(lEJXZjASMd6MVn@TWTB~4GQW&PyG+$7^B~huZLv@l~l(bssmVz=K%Uo9qYcrLf@0WN->_OtRUhjVV`xTdC zAbaakT}5qTcu)Dlz#GhAOuXqgdjfyTeI>OHL0OEM-qW%(;5dR{Elsoz$fr92ufL963zYD!btHRU_KBt6QmAwncr^`P;?|2B|eHkhzqF*O9tL7Xp$0bw~ z<#evm-1;m>dBX>(pqhVXU(+=pmN43?O+?Hmk1$XaoHN*9{Y5L-dn)0CBwpet~T*F;H-Q#705TG4# zn{?du-ZyDVp;pv2CeGEwA<=I*{?RR5hQ+no%2N_@%^7^{zD|F4ipiDZ-y(8hIa2(L zT^?OZAD!5_iHgjlAaZ>6Iu=i<1Leubr@t!B3av~|1Oq-ZC|Aq6`(1BHaPDUUw=(gl zE9KEv{{JgHJOmIsE+~(s`AE|%YiEU<&7fS(FU(fpVQuv9S}#3nO^*F7ow)BZA07vW zkf}q z$C9wvI);br1i|TWYEmHB33{a3kY=Ty`j(*Z5Job|)mZSO8Efw0!3#=ew&FX>x>XCrRl7;7rAQHwM}|%L z_IAYkM2CM7!neg0V?E{)xKz!59pWzL<8RSfC_=oEZ~v+4jIwpgnL-VzZ6`a>c**8w ziMXn~zg>fjNt7x4Qx39i_$ zS!lA^L=9ke|7Oa*)bw|nUVQUjWw`My#%U4dKvazH2eQNVTn@i};0`H(bg9TdQXBs_ zOr~bLni58l%kA#gj;PIy)!AVo((gs;DMq4s!7mep`tn-D^r{S!JZ7J_G>~Ey%f#*J z_%&?S@2KB4?8=9$vk~xf*jeXE0xSRPD0zlZO928u13v%)01f~)jdxb50)@z63jhG% PPLo>=NCu({00000hq1`C diff --git a/tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol b/tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol index 0269ce855..e5671b7ad 100644 --- a/tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol +++ b/tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol @@ -23,4 +23,15 @@ contract Unlocked is Locked, Send{ } +// Still reported because solidity < 0.6.0 doesn't have assembly in the AST +contract UnlockedAssembly is Locked{ + + function withdraw() public { + assembly { + let success := call(gas(), caller(),100,0,0,0,0) + } + } + +} + contract OnlyLocked is Locked{ } diff --git a/tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol-0.5.16.zip b/tests/e2e/detectors/test_data/locked-ether/0.5.16/locked_ether.sol-0.5.16.zip index 88255d730b0a6e7c46c18a15bb93bb7be61ba5e3..5dfba9e3fe6a261361334b8be8f71fb748a8b30e 100644 GIT binary patch delta 3340 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 diff --git a/tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol b/tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol index 7f02028e7..aef9ca6e7 100644 --- a/tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol +++ b/tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol @@ -23,4 +23,14 @@ contract Unlocked is Locked, Send{ } +contract UnlockedAssembly is Locked{ + + function withdraw() public { + assembly { + let success := call(gas(), caller(),100,0,0,0,0) + } + } + +} + contract OnlyLocked is Locked{ } diff --git a/tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol-0.6.11.zip b/tests/e2e/detectors/test_data/locked-ether/0.6.11/locked_ether.sol-0.6.11.zip index 2408eeb82bab590d4fe3a2a8303bf31cc5528608..48b675d9a326ccc17e93d23e6e5688a6b86dc2e4 100644 GIT binary patch delta 3444 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 BZdCvP delta 2878 zcmV-E3&Hf38@3l1P)h>@KL7#%4gfcecUD(TaRm$u008Dlkr-5e@kbAZrIlV+*LwgE zaqkuAn-IgLTge!$df`E^ z?Ro1j46EM`Z}*duTw66krOU6zS8q;e1dtTox)zjgw1UXsr=oI8HyLI`Vy9nTSv)Cg zDX=l80T7y`ln?PINM2GE_(nrv+XVon9@c(M>t}E|X+U#+2(h*oTbsq8 ze(r>;_2H^rVjObwd9?^p z$w#XXjSg^RjDFr`<5p{m*w`?FKMJMq6e>#TOHT1%2k8-W zd><%|4&2|Lxxsink;s{bM}o%kM4>4K)ulf`keBR!87-ot8hk=j0;AZJ?asR9#z!!k zW07*&f0LGQZNz-i{hSbQelokO2m}5Ct#_xc*mRbia;2ts|iCo(V*?C*d-4 ztXl-6=3M#8k`NpaQv?1w^9XE0zP;^#m&sJ7BLpGwdua3)VTO*xUxARKP1dS+-Y?+O z$8ugs`11>%WLL8OcNXG!NrTV5%QI6#!cbvQsdk}(6ChAkQO9XCyDcV+}I8+zKFCu zpK!B1{~yd1cNE;a4QR3FaDHa94!ZO^P)5OrIPKO5PdgrElvK0ck2y1UX0{@ z8|Xk`S&Da}^GaGqZ*F>cC&M_|9tGxZ?)89SNyEL*bkXK~>Ms#dQpYtBxYGE)&}*sf zn7#E^X$*ywa`H?r=b~`ag#5k?fw3eW)!R$xY=8k2X@m8Nc4Dsp2IX9TDB%adb99wT zxyUx(_uklr77{x6_X?GDnL^SKPHo;d`D%8&3)akO9QuHx(U~<5%Jtk@`x|Xwa@q|K zMs%`M{Nmlidk2oE|8MRxl=`MgwA!{XIZaMvNKo|DVQH5bZg}#Q23t(C!$rIS>V?DN z!)PXJnWlE?RoW4ZK-JKH@nr;bR8V4_9bH&okbSPsZ_$aUl7|#Hh%E*H2)P!xAMwKQ+{8L z6Pr{>i^_dVUO0Cj$`^k4Y)KU}J(C%1XjfVye_K`H;`C8V)x-HCR77+2`K4f|CwcUj z$5IrDuQ7sPS5>Fq(x3Z2~Kq_nw`Px$xF_Y z1IJ4VxvB>=qd{M+A2ft2aJG%r= zA}#cIlJ%Z{3mZ+nS&5Ps^vWMm^)^9LF)oeCwvTZ@IT9IxvvYnv2qYAb6y)C$0gDv% zKl9=a+gW-z9HesN`&)$>&O8;aoA)0Xpu*4E!@O@!>D~Xr7TG0_8w2wGe4M>K&VqU8?LuX*^hT_Qk#tGyXKFAqfP9RovdOb8$pM^(mV zAu}sodzD9+OkM?Kdb?$|=>?(!UjZu`rEt!bHj0nlA&=2Y*VKCL%Dv53P67DU^ttXP z`In9vp!Y1}yqmf3PKf*m660hScN1~AwEqZE;f_NGGIAa)^_XW2q9m-ldkr?^5EbYu z%OB@|gYZcKVBcr$gyGh@s@1F=bFVLSG(Th|ESMk&9#SV^d>O+H!^9;g?Xgp3r!F7P z+XY`A6xVIsWLwIVLhp?L4TyXXrffHqH30e(Z)a|%fq#R3(i_OJzjx~gf0l@a)@A^c zME!93;qRhnvhR)?Ydy%`RJF@a>cLb|jvCZ|y7U-L=y|5Mk*er9GxCv6EMp>35)H3) zB!67?t6v)~r!J(oTp$9kGf0_6M>n>4b8&W4f4;7--~N?+8r|a;F$2FT1JN;cjXr1*SL542&DU zGm%_Di$MW8y0sF-``N`pW)xI=$1**e3u1I7)Jr$M*5jY_?uh1coqLnwy2#Sw&IRts z@-*=|R<9JAR13NterFSm2r8aKBnq@c)*;x=Uv0ADM$-WNgJ^S5O928u13v%~0ssyG cH;s2zS50vR3=04N=17xB4M+w~3jhEB0AYk@LjV8( From d0f12dc710ca488f0ccfbdf3989c884b587176db Mon Sep 17 00:00:00 2001 From: Simone <79767264+smonicas@users.noreply.github.com> Date: Thu, 8 Jun 2023 23:05:57 +0200 Subject: [PATCH 178/220] Fix bytes pop ir (#1926) --- slither/slithir/convert.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/slither/slithir/convert.py b/slither/slithir/convert.py index 63c3745eb..d40715c4f 100644 --- a/slither/slithir/convert.py +++ b/slither/slithir/convert.py @@ -1363,11 +1363,12 @@ def convert_to_pop(ir: HighLevelCall, node: "Node") -> List[Operation]: # TODO the following is equivalent to length.points_to = arr # Should it be removed? ir_length.lvalue.points_to = arr - # Note bytes is an ElementaryType not ArrayType so in that case we use ir.destination.type + # Note bytes is an ElementaryType not ArrayType and bytes1 should be returned + # since bytes is bytes1[] without padding between the elements # while in other cases such as uint256[] (ArrayType) we use ir.destination.type.type # in this way we will have the type always set to the corresponding ElementaryType element_to_delete.set_type( - ir.destination.type + ElementaryType("bytes1") if isinstance(ir.destination.type, ElementaryType) else ir.destination.type.type ) From c8d20acca6f5039096907757832777f7d2b34bd7 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 8 Jun 2023 21:03:45 -0500 Subject: [PATCH 179/220] do not recommend changing mutability for abstract contracts (#1952) --- slither/detectors/variables/unchanged_state_variables.py | 2 ++ slither/detectors/variables/unused_state_variables.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/slither/detectors/variables/unchanged_state_variables.py b/slither/detectors/variables/unchanged_state_variables.py index f12cc5784..0e73ab57b 100644 --- a/slither/detectors/variables/unchanged_state_variables.py +++ b/slither/detectors/variables/unchanged_state_variables.py @@ -87,6 +87,8 @@ class UnchangedStateVariables: def detect(self) -> None: """Detect state variables that could be constant or immutable""" for c in self.compilation_unit.contracts_derived: + if c.is_signature_only(): + continue variables = [] functions = [] diff --git a/slither/detectors/variables/unused_state_variables.py b/slither/detectors/variables/unused_state_variables.py index afb4e3ac5..830ca34ca 100644 --- a/slither/detectors/variables/unused_state_variables.py +++ b/slither/detectors/variables/unused_state_variables.py @@ -20,8 +20,6 @@ from slither.visitors.expression.export_values import ExportValues def detect_unused(contract: Contract) -> Optional[List[StateVariable]]: - if contract.is_signature_only(): - return None # Get all the variables read in all the functions and modifiers all_functions = [ @@ -73,6 +71,8 @@ class UnusedStateVars(AbstractDetector): """Detect unused state variables""" results = [] for c in self.compilation_unit.contracts_derived: + if c.is_signature_only(): + continue unusedVars = detect_unused(c) if unusedVars: for var in unusedVars: From fc9377d28cc3818213f4f5fa39a763c595b10a85 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 8 Jun 2023 21:04:23 -0500 Subject: [PATCH 180/220] fail if artifact does not existing (#1947) --- tests/e2e/solc_parsing/test_ast_parsing.py | 9 +++------ .../expected/yul-top-level-0.8.0.sol-0.8.0-compact.json | 5 +++++ 2 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 tests/e2e/solc_parsing/test_data/expected/yul-top-level-0.8.0.sol-0.8.0-compact.json diff --git a/tests/e2e/solc_parsing/test_ast_parsing.py b/tests/e2e/solc_parsing/test_ast_parsing.py index a561343de..a1d294c1b 100644 --- a/tests/e2e/solc_parsing/test_ast_parsing.py +++ b/tests/e2e/solc_parsing/test_ast_parsing.py @@ -495,12 +495,9 @@ class TestASTParsing: actual = generate_output(sl) - try: - with open(expected, "r", encoding="utf8") as f: - expected = json.load(f) - except OSError: - pytest.xfail("the file for this test was not generated") - raise + assert os.path.isfile(expected), f"Expected file {expected} does not exist" + with open(expected, "r", encoding="utf8") as f: + expected = json.load(f) diff = DeepDiff(expected, actual, ignore_order=True, verbose_level=2, view="tree") if diff: diff --git a/tests/e2e/solc_parsing/test_data/expected/yul-top-level-0.8.0.sol-0.8.0-compact.json b/tests/e2e/solc_parsing/test_data/expected/yul-top-level-0.8.0.sol-0.8.0-compact.json new file mode 100644 index 000000000..f9655dff5 --- /dev/null +++ b/tests/e2e/solc_parsing/test_data/expected/yul-top-level-0.8.0.sol-0.8.0-compact.json @@ -0,0 +1,5 @@ +{ + "Test": { + "test()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n}\n" + } +} \ No newline at end of file From 1e709fd5bbc43d39d2639d6d3d16bdd2e0f23d10 Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Sat, 10 Jun 2023 14:24:54 -0400 Subject: [PATCH 181/220] additional optimizations for similar_variables.py --- .../detectors/variables/similar_variables.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/slither/detectors/variables/similar_variables.py b/slither/detectors/variables/similar_variables.py index 9f8eaaa2d..4aef01b03 100644 --- a/slither/detectors/variables/similar_variables.py +++ b/slither/detectors/variables/similar_variables.py @@ -47,9 +47,7 @@ class SimilarVarsDetection(AbstractDetector): Returns: bool: true if names are similar """ - if len(seq1) != len(seq2): - return False - val = difflib.SequenceMatcher(a=seq1.lower(), b=seq2.lower()).ratio() + val = difflib.SequenceMatcher(a=seq1, b=seq2).ratio() ret = val > 0.90 return ret @@ -67,19 +65,21 @@ class SimilarVarsDetection(AbstractDetector): all_var = list(set(all_var + contract_var)) - ret = [] + ret = set() # pylint: disable=consider-using-enumerate for i in range(len(all_var)): v1 = all_var[i] _v1_name_lower = v1.name.lower() for j in range(i, len(all_var)): v2 = all_var[j] - if _v1_name_lower != v2.name.lower(): - if SimilarVarsDetection.similar(v1.name, v2.name): - if (v2, v1) not in ret: - ret.append((v1, v2)) + if len(v1.name) != len(v2.name): + continue + _v2_name_lower = v2.name.lower() + if _v1_name_lower != _v2_name_lower: + if SimilarVarsDetection.similar(_v1_name_lower, _v2_name_lower): + ret.add((v1, v2)) - return set(ret) + return ret def _detect(self) -> List[Output]: """Detect similar variables name From 7cb7cb94ad00df6fe78775b656189643d896a993 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 15 Jun 2023 17:21:44 -0500 Subject: [PATCH 182/220] inform user if inheritance cannot be resolved (#1956) * inform user if inheritance cannot be resolved * lint * update explanation --- .../slither_compilation_unit_solc.py | 11 ++++++++++- .../contract_with_duplicate_names.sol | 2 ++ .../inheritance_resolution_error/import.sol | 1 + tests/unit/core/test_error_messages.py | 18 ++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/unit/core/test_data/inheritance_resolution_error/contract_with_duplicate_names.sol create mode 100644 tests/unit/core/test_data/inheritance_resolution_error/import.sol create mode 100644 tests/unit/core/test_error_messages.py diff --git a/slither/solc_parsing/slither_compilation_unit_solc.py b/slither/solc_parsing/slither_compilation_unit_solc.py index f4258cd41..a739c6f97 100644 --- a/slither/solc_parsing/slither_compilation_unit_solc.py +++ b/slither/solc_parsing/slither_compilation_unit_solc.py @@ -33,6 +33,10 @@ logger = logging.getLogger("SlitherSolcParsing") logger.setLevel(logging.INFO) +class InheritanceResolutionError(SlitherException): + pass + + def _handle_import_aliases( symbol_aliases: Dict, import_directive: Import, scope: FileScope ) -> None: @@ -432,7 +436,12 @@ Please rename it, this name is reserved for Slither's internals""" target = contract_parser.underlying_contract.file_scope.get_contract_from_name( contract_name ) - assert target + if target == contract_parser.underlying_contract: + raise InheritanceResolutionError( + "Could not resolve contract inheritance. This is likely caused by an import renaming that collides with existing names (see https://github.com/crytic/slither/issues/1758)." + f"\n Try changing `contract {target}` ({target.source_mapping}) to a unique name." + ) + assert target, f"Contract {contract_name} not found" ancestors.append(target) elif i in self._contracts_by_id: ancestors.append(self._contracts_by_id[i]) diff --git a/tests/unit/core/test_data/inheritance_resolution_error/contract_with_duplicate_names.sol b/tests/unit/core/test_data/inheritance_resolution_error/contract_with_duplicate_names.sol new file mode 100644 index 000000000..d5c6816e2 --- /dev/null +++ b/tests/unit/core/test_data/inheritance_resolution_error/contract_with_duplicate_names.sol @@ -0,0 +1,2 @@ +import {ERC20 as ERC20_1} from "./import.sol"; +contract ERC20 is ERC20_1 {} \ No newline at end of file diff --git a/tests/unit/core/test_data/inheritance_resolution_error/import.sol b/tests/unit/core/test_data/inheritance_resolution_error/import.sol new file mode 100644 index 000000000..e3221165a --- /dev/null +++ b/tests/unit/core/test_data/inheritance_resolution_error/import.sol @@ -0,0 +1 @@ +contract ERC20 {} \ No newline at end of file diff --git a/tests/unit/core/test_error_messages.py b/tests/unit/core/test_error_messages.py new file mode 100644 index 000000000..d0d915d56 --- /dev/null +++ b/tests/unit/core/test_error_messages.py @@ -0,0 +1,18 @@ +from pathlib import Path +import pytest + + +from slither import Slither +from slither.solc_parsing.slither_compilation_unit_solc import InheritanceResolutionError + +TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" +INHERITANCE_ERROR_ROOT = Path(TEST_DATA_DIR, "inheritance_resolution_error") + + +def test_inheritance_resolution_error(solc_binary_path) -> None: + with pytest.raises(InheritanceResolutionError): + solc_path = solc_binary_path("0.8.0") + Slither( + Path(INHERITANCE_ERROR_ROOT, "contract_with_duplicate_names.sol").as_posix(), + solc=solc_path, + ) From ccad54263de5802c9893bd6eb151aa68d1a2cb95 Mon Sep 17 00:00:00 2001 From: Simone <79767264+smonicas@users.noreply.github.com> Date: Fri, 16 Jun 2023 00:21:59 +0200 Subject: [PATCH 183/220] Handle if crytic-compile returns an empty ast (#1961) --- slither/solc_parsing/slither_compilation_unit_solc.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/slither/solc_parsing/slither_compilation_unit_solc.py b/slither/solc_parsing/slither_compilation_unit_solc.py index a739c6f97..00ac3a519 100644 --- a/slither/solc_parsing/slither_compilation_unit_solc.py +++ b/slither/solc_parsing/slither_compilation_unit_solc.py @@ -198,6 +198,13 @@ class SlitherCompilationUnitSolc(CallerContextExpression): # pylint: disable=too-many-branches,too-many-statements,too-many-locals def parse_top_level_from_loaded_json(self, data_loaded: Dict, filename: str) -> None: + if not data_loaded or data_loaded is None: + logger.error( + "crytic-compile returned an empty AST. " + "If you are trying to analyze a contract from etherscan or similar make sure it has source code available." + ) + return + if "nodeType" in data_loaded: self._is_compact_ast = True From 473576994024940ded6d895290c7e881f19efa6a Mon Sep 17 00:00:00 2001 From: Tigran Avagyan Date: Tue, 20 Jun 2023 11:48:45 +0400 Subject: [PATCH 184/220] Fixed issue which disallowed using operator[] with TopLevelVariables --- slither/slithir/operations/index.py | 7 +++++-- slither/slithir/variables/reference.py | 3 ++- .../local_variable_init_from_tuple.py | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/slither/slithir/operations/index.py b/slither/slithir/operations/index.py index f38a25927..4fcfb8a6d 100644 --- a/slither/slithir/operations/index.py +++ b/slither/slithir/operations/index.py @@ -3,6 +3,7 @@ from typing import List, Union from slither.core.declarations import SolidityVariableComposed from slither.core.source_mapping.source_mapping import SourceMapping from slither.core.variables.variable import Variable +from slither.core.variables.top_level_variable import TopLevelVariable from slither.slithir.operations.lvalue import OperationWithLValue from slither.slithir.utils.utils import is_valid_lvalue, is_valid_rvalue, RVALUE, LVALUE from slither.slithir.variables.reference import ReferenceVariable @@ -13,8 +14,10 @@ class Index(OperationWithLValue): self, result: ReferenceVariable, left_variable: Variable, right_variable: RVALUE ) -> None: super().__init__() - assert is_valid_lvalue(left_variable) or left_variable == SolidityVariableComposed( - "msg.data" + assert ( + is_valid_lvalue(left_variable) + or left_variable == SolidityVariableComposed("msg.data") + or isinstance(left_variable, TopLevelVariable) ) assert is_valid_rvalue(right_variable) assert isinstance(result, ReferenceVariable) diff --git a/slither/slithir/variables/reference.py b/slither/slithir/variables/reference.py index 9ab51be65..2f99d322e 100644 --- a/slither/slithir/variables/reference.py +++ b/slither/slithir/variables/reference.py @@ -2,6 +2,7 @@ from typing import Optional, TYPE_CHECKING from slither.core.declarations import Contract, Enum, SolidityVariable, Function from slither.core.variables.variable import Variable +from slither.core.variables.top_level_variable import TopLevelVariable if TYPE_CHECKING: from slither.core.cfg.node import Node @@ -46,7 +47,7 @@ class ReferenceVariable(Variable): from slither.slithir.utils.utils import is_valid_lvalue assert is_valid_lvalue(points_to) or isinstance( - points_to, (SolidityVariable, Contract, Enum) + points_to, (SolidityVariable, Contract, Enum, TopLevelVariable) ) self._points_to = points_to diff --git a/slither/solc_parsing/variables/local_variable_init_from_tuple.py b/slither/solc_parsing/variables/local_variable_init_from_tuple.py index 1a551c695..f1c872848 100644 --- a/slither/solc_parsing/variables/local_variable_init_from_tuple.py +++ b/slither/solc_parsing/variables/local_variable_init_from_tuple.py @@ -16,3 +16,21 @@ class LocalVariableInitFromTupleSolc(VariableDeclarationSolc): # Todo: Not sure how to overcome this with mypy assert isinstance(self._variable, LocalVariableInitFromTuple) return self._variable + + def _analyze_variable_attributes(self, attributes: Dict) -> None: + """' + Variable Location + Can be storage/memory or default + """ + if "storageLocation" in attributes: + location = attributes["storageLocation"] + self.underlying_variable.set_location(location) + else: + if "memory" in attributes["type"]: + self.underlying_variable.set_location("memory") + elif "storage" in attributes["type"]: + self.underlying_variable.set_location("storage") + else: + self.underlying_variable.set_location("default") + + super()._analyze_variable_attributes(attributes) From 8a5aab62c9a0a4b9dde91eb9d0ffd847b8987bdb Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 20 Jun 2023 11:03:42 -0500 Subject: [PATCH 185/220] reduce false positives on modifying storage array by value detector (#1962) Check the respective parameter's storage location for each argument --------- Co-authored-by: bossjoker1 <1397157763@qq.com> --- .../compiler_bugs/array_by_reference.py | 13 ++++++----- ...rence_0_4_25_array_by_reference_sol__0.txt | 14 +++++++----- ...rence_0_5_16_array_by_reference_sol__0.txt | 14 +++++++----- ...rence_0_6_11_array_by_reference_sol__0.txt | 14 +++++++----- ...erence_0_7_6_array_by_reference_sol__0.txt | 14 +++++++----- .../0.4.25/array_by_reference.sol | 21 ++++++++++++++++++ .../0.4.25/array_by_reference.sol-0.4.25.zip | Bin 4879 -> 6184 bytes .../0.5.16/array_by_reference.sol | 21 ++++++++++++++++++ .../0.5.16/array_by_reference.sol-0.5.16.zip | Bin 4925 -> 6194 bytes .../0.6.11/array_by_reference.sol | 21 ++++++++++++++++++ .../0.6.11/array_by_reference.sol-0.6.11.zip | Bin 4841 -> 6086 bytes .../0.7.6/array_by_reference.sol | 21 ++++++++++++++++++ .../0.7.6/array_by_reference.sol-0.7.6.zip | Bin 4741 -> 5972 bytes 13 files changed, 124 insertions(+), 29 deletions(-) diff --git a/slither/detectors/compiler_bugs/array_by_reference.py b/slither/detectors/compiler_bugs/array_by_reference.py index 04dfe085a..47e2af581 100644 --- a/slither/detectors/compiler_bugs/array_by_reference.py +++ b/slither/detectors/compiler_bugs/array_by_reference.py @@ -133,7 +133,7 @@ As a result, Bob's usage of the contract is incorrect.""" continue # Verify one of these parameters is an array in storage. - for arg in ir.arguments: + for (param, arg) in zip(ir.function.parameters, ir.arguments): # Verify this argument is a variable that is an array type. if not isinstance(arg, (StateVariable, LocalVariable)): continue @@ -141,8 +141,11 @@ As a result, Bob's usage of the contract is incorrect.""" continue # If it is a state variable OR a local variable referencing storage, we add it to the list. - if isinstance(arg, StateVariable) or ( - isinstance(arg, LocalVariable) and arg.location == "storage" + if ( + isinstance(arg, StateVariable) + or (isinstance(arg, LocalVariable) and arg.location == "storage") + ) and ( + isinstance(param.type, ArrayType) and param.location != "storage" ): results.append((node, arg, ir.function)) return results @@ -165,9 +168,9 @@ As a result, Bob's usage of the contract is incorrect.""" calling_node.function, " passes array ", affected_argument, - "by reference to ", + " by reference to ", invoked_function, - "which only takes arrays by value\n", + " which only takes arrays by value\n", ] res = self.generate_result(info) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt index f056bea10..5cb8add39 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt @@ -1,12 +1,14 @@ -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23) which only takes arrays by value -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23) which only takes arrays by value + +E.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#57-61) passes array E.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#54) by reference to E.setByValue(uint256[1],uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#63-66) which only takes arrays by value diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt index 4264c809a..6e97d8cc2 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt @@ -1,12 +1,14 @@ -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23) which only takes arrays by value -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23) which only takes arrays by value + +E.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#57-61) passes array E.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#54) by reference to E.setByValue(uint256[1],uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#63-66) which only takes arrays by value diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt index e71930b51..39574b5f5 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt @@ -1,12 +1,14 @@ -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23) which only takes arrays by value -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23) which only takes arrays by value + +E.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#57-61) passes array E.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#54) by reference to E.setByValue(uint256[1],uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#63-66) which only takes arrays by value diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt index 7c0f9ccd9..74ea36a0c 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt @@ -1,12 +1,14 @@ -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23) which only takes arrays by value -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23) which only takes arrays by value + +E.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#57-61) passes array E.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#54) by reference to E.setByValue(uint256[1],uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#63-66) which only takes arrays by value diff --git a/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol b/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol index 304af6a48..c2707601a 100644 --- a/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol +++ b/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol @@ -48,4 +48,25 @@ contract D { } +} + +contract E { + uint[1] public x; // storage + uint[1] public y; // storage + + function f() public { + uint[1] memory temp; + setByValue(temp, x); // can set temp, but cannot set x + setByRef(temp, y); // can set temp and y + } + + function setByValue(uint[1] memory arr, uint[1] memory arr2) internal { + arr[0] = 1; + arr2[0] = 2; + } + + function setByRef(uint[1] memory arr, uint[1] storage arr2) internal { + arr[0] = 2; + arr2[0] = 3; + } } \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol-0.4.25.zip b/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol-0.4.25.zip index d9daf8f4d7dc27c4f371b018a31cc9736180c278..96bdaa0f85c484feec1e0f47ea8e3409f0cd1dc9 100644 GIT binary patch delta 5938 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 G0001;R*ZlE From cec07db510e6064dea17a349839880d98adc4121 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 20 Jun 2023 11:12:06 -0500 Subject: [PATCH 186/220] feat: add `--unstructured` to slither-read-storage; retrieve custom storage layouts (#1963) Retrieve storage values of constant arguments passed to SLOAD. If a call to keccack is made, the expression is evaluated and treated as a constant. --------- Co-authored-by: webthethird --- slither/printers/guidance/echidna.py | 17 +- .../expressions/expression_parsing.py | 2 + slither/tools/read_storage/__main__.py | 7 + slither/tools/read_storage/read_storage.py | 315 ++++++++++++++++-- slither/tools/read_storage/utils/utils.py | 2 + slither/utils/integer_conversion.py | 4 +- .../visitors/expression/constants_folding.py | 71 ++-- tests/conftest.py | 6 +- .../tools/{check-erc => check_erc}/erc20.sol | 0 .../tools/{check-erc => check_erc}/test_1.txt | 0 .../safeAdd/safeAdd.sol | 0 .../safeAdd/spec.md | 0 .../{check-kspec => check_kspec}/test_1.txt | 0 .../contractV1.sol | 0 .../contractV1_struct.sol | 0 .../contractV2.sol | 0 .../contractV2_bug.sol | 0 .../contractV2_bug2.sol | 0 .../contractV2_struct.sol | 0 .../contractV2_struct_bug.sol | 0 .../contract_initialization.sol | 0 .../contract_v1_var_init.sol | 0 .../contract_v2_constant.sol | 0 .../proxy.sol | 0 .../test_1.txt | 0 .../test_10.txt | 0 .../test_11.txt | 0 .../test_12.txt | 0 .../test_13.txt | 0 .../test_2.txt | 0 .../test_3.txt | 0 .../test_4.txt | 0 .../test_5.txt | 0 .../test_6.txt | 0 .../test_7.txt | 0 .../test_8.txt | 0 .../test_9.txt | 0 tests/tools/read-storage/conftest.py | 56 ++++ ...ge_layout-0.8.10.sol => StorageLayout.sol} | 3 +- .../test_data/TEST_unstructured_storage.json | 56 ++++ .../test_data/UnstructuredStorageLayout.abi | 1 + .../test_data/UnstructuredStorageLayout.bin | 1 + .../test_data/UnstructuredStorageLayout.sol | 141 ++++++++ tests/tools/read-storage/test_read_storage.py | 66 +--- tests/unit/core/test_constant_folding.py | 59 ++-- .../constant_folding_binop.sol | 2 + 46 files changed, 680 insertions(+), 129 deletions(-) rename tests/tools/{check-erc => check_erc}/erc20.sol (100%) rename tests/tools/{check-erc => check_erc}/test_1.txt (100%) rename tests/tools/{check-kspec => check_kspec}/safeAdd/safeAdd.sol (100%) rename tests/tools/{check-kspec => check_kspec}/safeAdd/spec.md (100%) rename tests/tools/{check-kspec => check_kspec}/test_1.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/contractV1.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/contractV1_struct.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/contractV2.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/contractV2_bug.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/contractV2_bug2.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/contractV2_struct.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/contractV2_struct_bug.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/contract_initialization.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/contract_v1_var_init.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/contract_v2_constant.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/proxy.sol (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_1.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_10.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_11.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_12.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_13.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_2.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_3.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_4.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_5.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_6.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_7.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_8.txt (100%) rename tests/tools/{check-upgradeability => check_upgradeability}/test_9.txt (100%) create mode 100644 tests/tools/read-storage/conftest.py rename tests/tools/read-storage/test_data/{storage_layout-0.8.10.sol => StorageLayout.sol} (95%) create mode 100644 tests/tools/read-storage/test_data/TEST_unstructured_storage.json create mode 100644 tests/tools/read-storage/test_data/UnstructuredStorageLayout.abi create mode 100644 tests/tools/read-storage/test_data/UnstructuredStorageLayout.bin create mode 100644 tests/tools/read-storage/test_data/UnstructuredStorageLayout.sol diff --git a/slither/printers/guidance/echidna.py b/slither/printers/guidance/echidna.py index acbf5b015..25e0968cd 100644 --- a/slither/printers/guidance/echidna.py +++ b/slither/printers/guidance/echidna.py @@ -32,7 +32,7 @@ from slither.slithir.operations import ( from slither.slithir.operations.binary import Binary from slither.slithir.variables import Constant from slither.utils.output import Output -from slither.visitors.expression.constants_folding import ConstantFolding +from slither.visitors.expression.constants_folding import ConstantFolding, NotConstant def _get_name(f: Union[Function, Variable]) -> str: @@ -178,11 +178,16 @@ def _extract_constants_from_irs( # pylint: disable=too-many-branches,too-many-n all_cst_used_in_binary[str(ir.type)].append( ConstantValue(str(r.value), str(r.type)) ) - if isinstance(ir.variable_left, Constant) and isinstance(ir.variable_right, Constant): - if ir.lvalue: - type_ = ir.lvalue.type - cst = ConstantFolding(ir.expression, type_).result() - all_cst_used.append(ConstantValue(str(cst.value), str(type_))) + if isinstance(ir.variable_left, Constant) or isinstance( + ir.variable_right, Constant + ): + if ir.lvalue: + try: + type_ = ir.lvalue.type + cst = ConstantFolding(ir.expression, type_).result() + all_cst_used.append(ConstantValue(str(cst.value), str(type_))) + except NotConstant: + pass if isinstance(ir, TypeConversion): if isinstance(ir.variable, Constant): if isinstance(ir.type, TypeAlias): diff --git a/slither/solc_parsing/expressions/expression_parsing.py b/slither/solc_parsing/expressions/expression_parsing.py index 945a60b8f..4d2cfc00f 100644 --- a/slither/solc_parsing/expressions/expression_parsing.py +++ b/slither/solc_parsing/expressions/expression_parsing.py @@ -433,6 +433,8 @@ def parse_expression(expression: Dict, caller_context: CallerContextExpression) type_candidate = ElementaryType("uint256") else: type_candidate = ElementaryType("string") + elif type_candidate.startswith("rational_const "): + type_candidate = ElementaryType("uint256") elif type_candidate.startswith("int_const "): type_candidate = ElementaryType("uint256") elif type_candidate.startswith("bool"): diff --git a/slither/tools/read_storage/__main__.py b/slither/tools/read_storage/__main__.py index f6635ab4b..8415ae185 100644 --- a/slither/tools/read_storage/__main__.py +++ b/slither/tools/read_storage/__main__.py @@ -104,6 +104,12 @@ def parse_args() -> argparse.Namespace: default="latest", ) + parser.add_argument( + "--unstructured", + action="store_true", + help="Include unstructured storage slots", + ) + cryticparser.init(parser) return parser.parse_args() @@ -133,6 +139,7 @@ def main() -> None: rpc_info = RpcInfo(args.rpc_url, block) srs = SlitherReadStorage(contracts, args.max_depth, rpc_info) + srs.unstructured = bool(args.unstructured) # Remove target prefix e.g. rinkeby:0x0 -> 0x0. address = target[target.find(":") + 1 :] # Default to implementation address unless a storage address is given. diff --git a/slither/tools/read_storage/read_storage.py b/slither/tools/read_storage/read_storage.py index 72331f66a..8c0cf515d 100644 --- a/slither/tools/read_storage/read_storage.py +++ b/slither/tools/read_storage/read_storage.py @@ -15,9 +15,21 @@ from web3.middleware import geth_poa_middleware from slither.core.declarations import Contract, Structure from slither.core.solidity_types import ArrayType, ElementaryType, MappingType, UserDefinedType from slither.core.solidity_types.type import Type +from slither.core.cfg.node import NodeType from slither.core.variables.state_variable import StateVariable from slither.core.variables.structure_variable import StructureVariable +from slither.core.expressions import ( + AssignmentOperation, + Literal, + Identifier, + BinaryOperation, + UnaryOperation, + TupleExpression, + TypeConversion, + CallExpression, +) from slither.utils.myprettytable import MyPrettyTable +from slither.visitors.expression.constants_folding import ConstantFolding, NotConstant from .utils import coerce_type, get_offset_value, get_storage_data @@ -72,7 +84,7 @@ class RpcInfo: return self._block -# pylint: disable=too-many-instance-attributes +# pylint: disable=too-many-instance-attributes,too-many-public-methods class SlitherReadStorage: def __init__(self, contracts: List[Contract], max_depth: int, rpc_info: RpcInfo = None) -> None: self._checksum_address: Optional[ChecksumAddress] = None @@ -81,9 +93,11 @@ class SlitherReadStorage: self._max_depth: int = max_depth self._slot_info: Dict[str, SlotInfo] = {} self._target_variables: List[Tuple[Contract, StateVariable]] = [] + self._constant_storage_slots: List[Tuple[Contract, StateVariable]] = [] self.rpc_info: Optional[RpcInfo] = rpc_info self.storage_address: Optional[str] = None self.table: Optional[MyPrettyTable] = None + self.unstructured: bool = False @property def contracts(self) -> List[Contract]: @@ -114,6 +128,11 @@ class SlitherReadStorage: """Storage variables (not constant or immutable) and their associated contract.""" return self._target_variables + @property + def constant_slots(self) -> List[Tuple[Contract, StateVariable]]: + """Constant bytes32 variables and their associated contract.""" + return self._constant_storage_slots + @property def slot_info(self) -> Dict[str, SlotInfo]: """Contains the location, type, size, offset, and value of contract slots.""" @@ -133,9 +152,48 @@ class SlitherReadStorage: elif isinstance(type_, ArrayType): elems = self._all_array_slots(var, contract, type_, info.slot) tmp[var.name].elems = elems - + if self.unstructured: + tmp.update(self.get_unstructured_layout()) self._slot_info = tmp + def get_unstructured_layout(self) -> Dict[str, SlotInfo]: + tmp: Dict[str, SlotInfo] = {} + for _, var in self.constant_slots: + var_name = var.name + try: + exp = var.expression + if isinstance( + exp, + ( + BinaryOperation, + UnaryOperation, + Identifier, + TupleExpression, + TypeConversion, + CallExpression, + ), + ): + exp = ConstantFolding(exp, "bytes32").result() + if isinstance(exp, Literal): + slot = coerce_type("int", exp.value) + else: + continue + offset = 0 + type_string, size = self.find_constant_slot_storage_type(var) + if type_string: + tmp[var.name] = SlotInfo( + name=var_name, type_string=type_string, slot=slot, size=size, offset=offset + ) + self.log += ( + f"\nSlot Name: {var_name}\nType: bytes32" + f"\nStorage Type: {type_string}\nSlot: {str(exp)}\n" + ) + logger.info(self.log) + self.log = "" + except NotConstant: + continue + return tmp + # TODO: remove this pylint exception (montyly) # pylint: disable=too-many-locals def get_storage_slot( @@ -144,7 +202,8 @@ class SlitherReadStorage: contract: Contract, **kwargs: Any, ) -> Union[SlotInfo, None]: - """Finds the storage slot of a variable in a given contract. + """ + Finds the storage slot of a variable in a given contract. Args: target_variable (`StateVariable`): The variable to retrieve the slot for. contracts (`Contract`): The contract that contains the given state variable. @@ -230,6 +289,78 @@ class SlitherReadStorage: if slot_info: self._slot_info[f"{contract.name}.{var.name}"] = slot_info + def find_constant_slot_storage_type( + self, var: StateVariable + ) -> Tuple[Optional[str], Optional[int]]: + """ + Given a constant bytes32 StateVariable, tries to determine which variable type is stored there, using the + heuristic that if a function reads from the slot and returns a value, it probably stores that type of value. + Also uses the StorageSlot library as a heuristic when a function has no return but uses the library's getters. + Args: + var (StateVariable): The constant bytes32 storage slot. + + Returns: + type (str): The type of value stored in the slot. + size (int): The type's size in bits. + """ + assert var.is_constant and var.type == ElementaryType("bytes32") + storage_type = None + size = None + funcs = [] + for c in self.contracts: + c_funcs = c.get_functions_reading_from_variable(var) + c_funcs.extend( + f + for f in c.functions + if any(str(v.expression) == str(var.expression) for v in f.variables) + ) + c_funcs = list(set(c_funcs)) + funcs.extend(c_funcs) + fallback = [f for f in var.contract.functions if f.is_fallback] + funcs += fallback + for func in funcs: + rets = func.return_type if func.return_type is not None else [] + for ret in rets: + size, _ = ret.storage_size + if size <= 32: + return str(ret), size * 8 + for node in func.all_nodes(): + exp = node.expression + # Look for use of the common OpenZeppelin StorageSlot library + if f"getAddressSlot({var.name})" in str(exp): + return "address", 160 + if f"getBooleanSlot({var.name})" in str(exp): + return "bool", 1 + if f"getBytes32Slot({var.name})" in str(exp): + return "bytes32", 256 + if f"getUint256Slot({var.name})" in str(exp): + return "uint256", 256 + # Look for variable assignment in assembly loaded from a hardcoded slot + if ( + isinstance(exp, AssignmentOperation) + and isinstance(exp.expression_left, Identifier) + and isinstance(exp.expression_right, CallExpression) + and "sload" in str(exp.expression_right.called) + and str(exp.expression_right.arguments[0]) == str(var.expression) + ): + if func.is_fallback: + return "address", 160 + storage_type = exp.expression_left.value.type.name + size, _ = exp.expression_left.value.type.storage_size + return storage_type, size * 8 + # Look for variable storage in assembly stored to a hardcoded slot + if ( + isinstance(exp, CallExpression) + and "sstore" in str(exp.called) + and isinstance(exp.arguments[0], Identifier) + and isinstance(exp.arguments[1], Identifier) + and str(exp.arguments[0].value.expression) == str(var.expression) + ): + storage_type = exp.arguments[1].value.type.name + size, _ = exp.arguments[1].value.type.storage_size + return storage_type, size * 8 + return storage_type, size + def walk_slot_info(self, func: Callable) -> None: stack = list(self.slot_info.values()) while stack: @@ -242,7 +373,8 @@ class SlitherReadStorage: func(slot_info) def get_slot_values(self, slot_info: SlotInfo) -> None: - """Fetches the slot value of `SlotInfo` object + """ + Fetches the slot value of `SlotInfo` object :param slot_info: """ assert self.rpc_info is not None @@ -257,25 +389,162 @@ class SlitherReadStorage: ) logger.info(f"\nValue: {slot_info.value}\n") - def get_all_storage_variables(self, func: Callable = None) -> None: - """Fetches all storage variables from a list of contracts. + def get_all_storage_variables(self, func: Callable = lambda x: x) -> None: + """ + Fetches all storage variables from a list of contracts. kwargs: func (Callable, optional): A criteria to filter functions e.g. name. """ for contract in self.contracts: - self._target_variables.extend( - filter( - func, - [ - (contract, var) - for var in contract.state_variables_ordered - if not var.is_constant and not var.is_immutable - ], - ) + for var in contract.state_variables_ordered: + if func(var): + if not var.is_constant and not var.is_immutable: + self._target_variables.append((contract, var)) + elif ( + self.unstructured + and var.is_constant + and var.type == ElementaryType("bytes32") + ): + self._constant_storage_slots.append((contract, var)) + if self.unstructured: + hardcoded_slot = self.find_hardcoded_slot_in_fallback(contract) + if hardcoded_slot is not None: + self._constant_storage_slots.append((contract, hardcoded_slot)) + + def find_hardcoded_slot_in_fallback(self, contract: Contract) -> Optional[StateVariable]: + """ + Searches the contract's fallback function for a sload from a literal storage slot, i.e., + `let contractLogic := sload(0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7)`. + + Args: + contract: a Contract object, which should have a fallback function. + + Returns: + A newly created StateVariable representing the Literal bytes32 slot, if one is found, otherwise None. + """ + fallback = None + for func in contract.functions_entry_points: + if func.is_fallback: + fallback = func + break + if fallback is None: + return None + queue = [fallback.entry_point] + visited = [] + while len(queue) > 0: + node = queue.pop(0) + visited.append(node) + queue.extend(son for son in node.sons if son not in visited) + if node.type == NodeType.ASSEMBLY and isinstance(node.inline_asm, str): + return SlitherReadStorage.find_hardcoded_slot_in_asm_str(node.inline_asm, contract) + if node.type == NodeType.EXPRESSION: + sv = self.find_hardcoded_slot_in_exp(node.expression, contract) + if sv is not None: + return sv + return None + + @staticmethod + def find_hardcoded_slot_in_asm_str( + inline_asm: str, contract: Contract + ) -> Optional[StateVariable]: + """ + Searches a block of assembly code (given as a string) for a sload from a literal storage slot. + Does not work if the argument passed to sload does not start with "0x", i.e., `sload(add(1,1))` + or `and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)`. + + Args: + inline_asm: a string containing all the code in an assembly node (node.inline_asm for solc < 0.6.0). + + Returns: + A newly created StateVariable representing the Literal bytes32 slot, if one is found, otherwise None. + """ + asm_split = inline_asm.split("\n") + for asm in asm_split: + if "sload(" in asm: # Only handle literals + arg = asm.split("sload(")[1].split(")")[0] + if arg.startswith("0x"): + exp = Literal(arg, ElementaryType("bytes32")) + sv = StateVariable() + sv.name = "fallback_sload_hardcoded" + sv.expression = exp + sv.is_constant = True + sv.type = exp.type + sv.set_contract(contract) + return sv + return None + + def find_hardcoded_slot_in_exp( + self, exp: "Expression", contract: Contract + ) -> Optional[StateVariable]: + """ + Parses an expression to see if it contains a sload from a literal storage slot, + unrolling nested expressions if necessary to determine which slot it loads from. + Args: + exp: an Expression object to search. + contract: the Contract containing exp. + + Returns: + A newly created StateVariable representing the Literal bytes32 slot, if one is found, otherwise None. + """ + if isinstance(exp, AssignmentOperation): + exp = exp.expression_right + while isinstance(exp, BinaryOperation): + exp = next( + (e for e in exp.expressions if isinstance(e, (CallExpression, BinaryOperation))), + exp.expression_left, ) + while isinstance(exp, CallExpression) and len(exp.arguments) > 0: + called = exp.called + exp = exp.arguments[0] + if "sload" in str(called): + break + if isinstance( + exp, + ( + BinaryOperation, + UnaryOperation, + Identifier, + TupleExpression, + TypeConversion, + CallExpression, + ), + ): + try: + exp = ConstantFolding(exp, "bytes32").result() + except NotConstant: + return None + if ( + isinstance(exp, Literal) + and isinstance(exp.type, ElementaryType) + and exp.type.name in ["bytes32", "uint256"] + ): + sv = StateVariable() + sv.name = "fallback_sload_hardcoded" + value = exp.value + str_value = str(value) + if str_value.isdecimal(): + value = int(value) + if isinstance(value, (int, bytes)): + if isinstance(value, bytes): + str_value = "0x" + value.hex() + value = int(str_value, 16) + exp = Literal(str_value, ElementaryType("bytes32")) + state_var_slots = [ + self.get_variable_info(contract, var)[0] + for contract, var in self.target_variables + ] + if value in state_var_slots: + return None + sv.expression = exp + sv.is_constant = True + sv.type = ElementaryType("bytes32") + sv.set_contract(contract) + return sv + return None def convert_slot_info_to_rows(self, slot_info: SlotInfo) -> None: - """Convert and append slot info to table. Create table if it + """ + Convert and append slot info to table. Create table if it does not yet exist :param slot_info: """ @@ -293,7 +562,8 @@ class SlitherReadStorage: def _find_struct_var_slot( elems: List[StructureVariable], slot_as_bytes: bytes, struct_var: str ) -> Tuple[str, str, bytes, int, int]: - """Finds the slot of a structure variable. + """ + Finds the slot of a structure variable. Args: elems (List[StructureVariable]): Ordered list of structure variables. slot_as_bytes (bytes): The slot of the struct to begin searching at. @@ -335,7 +605,8 @@ class SlitherReadStorage: deep_key: int = None, struct_var: str = None, ) -> Tuple[str, str, bytes, int, int]: - """Finds the slot of array's index. + """ + Finds the slot of array's index. Args: target_variable (`StateVariable`): The array that contains the target variable. slot (bytes): The starting slot of the array. @@ -438,7 +709,8 @@ class SlitherReadStorage: deep_key: Union[int, str] = None, struct_var: str = None, ) -> Tuple[str, str, bytes, int, int]: - """Finds the data slot of a target variable within a mapping. + """ + Finds the data slot of a target variable within a mapping. target_variable (`StateVariable`): The mapping that contains the target variable. slot (bytes): The starting slot of the mapping. key (Union[int, str]): The key the variable is stored at. @@ -509,7 +781,7 @@ class SlitherReadStorage: ) info += info_tmp - # TODO: suppory mapping with dynamic arrays + # TODO: support mapping with dynamic arrays # mapping(elem => elem) elif isinstance(target_variable_type.type_to, ElementaryType): @@ -615,7 +887,8 @@ class SlitherReadStorage: return elems def _get_array_length(self, type_: Type, slot: int) -> int: - """Gets the length of dynamic and fixed arrays. + """ + Gets the length of dynamic and fixed arrays. Args: type_ (`AbstractType`): The array type. slot (int): Slot a dynamic array's length is stored at. diff --git a/slither/tools/read_storage/utils/utils.py b/slither/tools/read_storage/utils/utils.py index 4a04a5b6d..20e7c1372 100644 --- a/slither/tools/read_storage/utils/utils.py +++ b/slither/tools/read_storage/utils/utils.py @@ -37,6 +37,8 @@ def coerce_type( (Union[int, bool, str, ChecksumAddress, hex]): The type representation of the value. """ if "int" in solidity_type: + if str(value).startswith("0x"): + return to_int(hexstr=value) return to_int(value) if "bool" in solidity_type: return bool(to_int(value)) diff --git a/slither/utils/integer_conversion.py b/slither/utils/integer_conversion.py index e4dff333c..99064f564 100644 --- a/slither/utils/integer_conversion.py +++ b/slither/utils/integer_conversion.py @@ -4,7 +4,9 @@ from typing import Union from slither.exceptions import SlitherError -def convert_string_to_fraction(val: Union[str, int]) -> Fraction: +def convert_string_to_fraction(val: Union[str, bytes, int]) -> Fraction: + if isinstance(val, bytes): + return int.from_bytes(val, byteorder="big") if isinstance(val, int): return Fraction(val) if val.startswith(("0x", "0X")): diff --git a/slither/visitors/expression/constants_folding.py b/slither/visitors/expression/constants_folding.py index 12eb6be9d..b1fa570c6 100644 --- a/slither/visitors/expression/constants_folding.py +++ b/slither/visitors/expression/constants_folding.py @@ -1,5 +1,6 @@ from fractions import Fraction from typing import Union +from Crypto.Hash import keccak from slither.core import expressions from slither.core.expressions import ( @@ -11,9 +12,9 @@ from slither.core.expressions import ( UnaryOperation, TupleExpression, TypeConversion, + CallExpression, ) from slither.core.variables import Variable - from slither.utils.integer_conversion import convert_string_to_fraction, convert_string_to_int from slither.visitors.expression.expression import ExpressionVisitor from slither.core.solidity_types.elementary_type import ElementaryType @@ -65,23 +66,31 @@ class ConstantFolding(ExpressionVisitor): value = value & (2**256 - 1) return Literal(value, self._type) + # pylint: disable=import-outside-toplevel def _post_identifier(self, expression: Identifier) -> None: - if not isinstance(expression.value, Variable): - return - if not expression.value.is_constant: + from slither.core.declarations.solidity_variables import SolidityFunction + + if isinstance(expression.value, Variable): + if expression.value.is_constant: + expr = expression.value.expression + # assumption that we won't have infinite loop + # Everything outside of literal + if isinstance( + expr, + (BinaryOperation, UnaryOperation, Identifier, TupleExpression, TypeConversion), + ): + cf = ConstantFolding(expr, self._type) + expr = cf.result() + assert isinstance(expr, Literal) + set_val(expression, convert_string_to_int(expr.converted_value)) + else: + raise NotConstant + elif isinstance(expression.value, SolidityFunction): + set_val(expression, expression.value) + else: raise NotConstant - expr = expression.value.expression - # assumption that we won't have infinite loop - # Everything outside of literal - if isinstance( - expr, (BinaryOperation, UnaryOperation, Identifier, TupleExpression, TypeConversion) - ): - cf = ConstantFolding(expr, self._type) - expr = cf.result() - assert isinstance(expr, Literal) - set_val(expression, convert_string_to_int(expr.converted_value)) - # pylint: disable=too-many-branches + # pylint: disable=too-many-branches,too-many-statements def _post_binary_operation(self, expression: BinaryOperation) -> None: expression_left = expression.expression_left expression_right = expression.expression_right @@ -95,7 +104,6 @@ class ConstantFolding(ExpressionVisitor): (Literal, BinaryOperation, UnaryOperation, Identifier, TupleExpression, TypeConversion), ): raise NotConstant - left = get_val(expression_left) right = get_val(expression_right) @@ -183,7 +191,9 @@ class ConstantFolding(ExpressionVisitor): raise NotConstant def _post_literal(self, expression: Literal) -> None: - if expression.converted_value in ["true", "false"]: + if str(expression.type) == "bool": + set_val(expression, expression.converted_value) + elif str(expression.type) == "string": set_val(expression, expression.converted_value) else: try: @@ -195,7 +205,14 @@ class ConstantFolding(ExpressionVisitor): raise NotConstant def _post_call_expression(self, expression: expressions.CallExpression) -> None: - raise NotConstant + called = get_val(expression.called) + args = [get_val(arg) for arg in expression.arguments] + if called.name == "keccak256(bytes)": + digest = keccak.new(digest_bits=256) + digest.update(str(args[0]).encode("utf-8")) + set_val(expression, digest.digest()) + else: + raise NotConstant def _post_conditional_expression(self, expression: expressions.ConditionalExpression) -> None: raise NotConstant @@ -247,10 +264,24 @@ class ConstantFolding(ExpressionVisitor): expr = expression.expression if not isinstance( expr, - (Literal, BinaryOperation, UnaryOperation, Identifier, TupleExpression, TypeConversion), + ( + Literal, + BinaryOperation, + UnaryOperation, + Identifier, + TupleExpression, + TypeConversion, + CallExpression, + ), ): raise NotConstant cf = ConstantFolding(expr, self._type) expr = cf.result() assert isinstance(expr, Literal) - set_val(expression, convert_string_to_fraction(expr.converted_value)) + if str(expression.type).startswith("uint") and isinstance(expr.value, bytes): + value = int.from_bytes(expr.value, "big") + elif str(expression.type).startswith("byte") and isinstance(expr.value, int): + value = int.to_bytes(expr.value, 32, "big") + else: + value = convert_string_to_fraction(expr.converted_value) + set_val(expression, value) diff --git a/tests/conftest.py b/tests/conftest.py index 5ea228fd3..63fccfa12 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,12 +1,12 @@ # pylint: disable=redefined-outer-name import os -from pathlib import Path -import tempfile import shutil +import tempfile +from pathlib import Path from contextlib import contextmanager -import pytest from filelock import FileLock from solc_select import solc_select +import pytest from slither import Slither diff --git a/tests/tools/check-erc/erc20.sol b/tests/tools/check_erc/erc20.sol similarity index 100% rename from tests/tools/check-erc/erc20.sol rename to tests/tools/check_erc/erc20.sol diff --git a/tests/tools/check-erc/test_1.txt b/tests/tools/check_erc/test_1.txt similarity index 100% rename from tests/tools/check-erc/test_1.txt rename to tests/tools/check_erc/test_1.txt diff --git a/tests/tools/check-kspec/safeAdd/safeAdd.sol b/tests/tools/check_kspec/safeAdd/safeAdd.sol similarity index 100% rename from tests/tools/check-kspec/safeAdd/safeAdd.sol rename to tests/tools/check_kspec/safeAdd/safeAdd.sol diff --git a/tests/tools/check-kspec/safeAdd/spec.md b/tests/tools/check_kspec/safeAdd/spec.md similarity index 100% rename from tests/tools/check-kspec/safeAdd/spec.md rename to tests/tools/check_kspec/safeAdd/spec.md diff --git a/tests/tools/check-kspec/test_1.txt b/tests/tools/check_kspec/test_1.txt similarity index 100% rename from tests/tools/check-kspec/test_1.txt rename to tests/tools/check_kspec/test_1.txt diff --git a/tests/tools/check-upgradeability/contractV1.sol b/tests/tools/check_upgradeability/contractV1.sol similarity index 100% rename from tests/tools/check-upgradeability/contractV1.sol rename to tests/tools/check_upgradeability/contractV1.sol diff --git a/tests/tools/check-upgradeability/contractV1_struct.sol b/tests/tools/check_upgradeability/contractV1_struct.sol similarity index 100% rename from tests/tools/check-upgradeability/contractV1_struct.sol rename to tests/tools/check_upgradeability/contractV1_struct.sol diff --git a/tests/tools/check-upgradeability/contractV2.sol b/tests/tools/check_upgradeability/contractV2.sol similarity index 100% rename from tests/tools/check-upgradeability/contractV2.sol rename to tests/tools/check_upgradeability/contractV2.sol diff --git a/tests/tools/check-upgradeability/contractV2_bug.sol b/tests/tools/check_upgradeability/contractV2_bug.sol similarity index 100% rename from tests/tools/check-upgradeability/contractV2_bug.sol rename to tests/tools/check_upgradeability/contractV2_bug.sol diff --git a/tests/tools/check-upgradeability/contractV2_bug2.sol b/tests/tools/check_upgradeability/contractV2_bug2.sol similarity index 100% rename from tests/tools/check-upgradeability/contractV2_bug2.sol rename to tests/tools/check_upgradeability/contractV2_bug2.sol diff --git a/tests/tools/check-upgradeability/contractV2_struct.sol b/tests/tools/check_upgradeability/contractV2_struct.sol similarity index 100% rename from tests/tools/check-upgradeability/contractV2_struct.sol rename to tests/tools/check_upgradeability/contractV2_struct.sol diff --git a/tests/tools/check-upgradeability/contractV2_struct_bug.sol b/tests/tools/check_upgradeability/contractV2_struct_bug.sol similarity index 100% rename from tests/tools/check-upgradeability/contractV2_struct_bug.sol rename to tests/tools/check_upgradeability/contractV2_struct_bug.sol diff --git a/tests/tools/check-upgradeability/contract_initialization.sol b/tests/tools/check_upgradeability/contract_initialization.sol similarity index 100% rename from tests/tools/check-upgradeability/contract_initialization.sol rename to tests/tools/check_upgradeability/contract_initialization.sol diff --git a/tests/tools/check-upgradeability/contract_v1_var_init.sol b/tests/tools/check_upgradeability/contract_v1_var_init.sol similarity index 100% rename from tests/tools/check-upgradeability/contract_v1_var_init.sol rename to tests/tools/check_upgradeability/contract_v1_var_init.sol diff --git a/tests/tools/check-upgradeability/contract_v2_constant.sol b/tests/tools/check_upgradeability/contract_v2_constant.sol similarity index 100% rename from tests/tools/check-upgradeability/contract_v2_constant.sol rename to tests/tools/check_upgradeability/contract_v2_constant.sol diff --git a/tests/tools/check-upgradeability/proxy.sol b/tests/tools/check_upgradeability/proxy.sol similarity index 100% rename from tests/tools/check-upgradeability/proxy.sol rename to tests/tools/check_upgradeability/proxy.sol diff --git a/tests/tools/check-upgradeability/test_1.txt b/tests/tools/check_upgradeability/test_1.txt similarity index 100% rename from tests/tools/check-upgradeability/test_1.txt rename to tests/tools/check_upgradeability/test_1.txt diff --git a/tests/tools/check-upgradeability/test_10.txt b/tests/tools/check_upgradeability/test_10.txt similarity index 100% rename from tests/tools/check-upgradeability/test_10.txt rename to tests/tools/check_upgradeability/test_10.txt diff --git a/tests/tools/check-upgradeability/test_11.txt b/tests/tools/check_upgradeability/test_11.txt similarity index 100% rename from tests/tools/check-upgradeability/test_11.txt rename to tests/tools/check_upgradeability/test_11.txt diff --git a/tests/tools/check-upgradeability/test_12.txt b/tests/tools/check_upgradeability/test_12.txt similarity index 100% rename from tests/tools/check-upgradeability/test_12.txt rename to tests/tools/check_upgradeability/test_12.txt diff --git a/tests/tools/check-upgradeability/test_13.txt b/tests/tools/check_upgradeability/test_13.txt similarity index 100% rename from tests/tools/check-upgradeability/test_13.txt rename to tests/tools/check_upgradeability/test_13.txt diff --git a/tests/tools/check-upgradeability/test_2.txt b/tests/tools/check_upgradeability/test_2.txt similarity index 100% rename from tests/tools/check-upgradeability/test_2.txt rename to tests/tools/check_upgradeability/test_2.txt diff --git a/tests/tools/check-upgradeability/test_3.txt b/tests/tools/check_upgradeability/test_3.txt similarity index 100% rename from tests/tools/check-upgradeability/test_3.txt rename to tests/tools/check_upgradeability/test_3.txt diff --git a/tests/tools/check-upgradeability/test_4.txt b/tests/tools/check_upgradeability/test_4.txt similarity index 100% rename from tests/tools/check-upgradeability/test_4.txt rename to tests/tools/check_upgradeability/test_4.txt diff --git a/tests/tools/check-upgradeability/test_5.txt b/tests/tools/check_upgradeability/test_5.txt similarity index 100% rename from tests/tools/check-upgradeability/test_5.txt rename to tests/tools/check_upgradeability/test_5.txt diff --git a/tests/tools/check-upgradeability/test_6.txt b/tests/tools/check_upgradeability/test_6.txt similarity index 100% rename from tests/tools/check-upgradeability/test_6.txt rename to tests/tools/check_upgradeability/test_6.txt diff --git a/tests/tools/check-upgradeability/test_7.txt b/tests/tools/check_upgradeability/test_7.txt similarity index 100% rename from tests/tools/check-upgradeability/test_7.txt rename to tests/tools/check_upgradeability/test_7.txt diff --git a/tests/tools/check-upgradeability/test_8.txt b/tests/tools/check_upgradeability/test_8.txt similarity index 100% rename from tests/tools/check-upgradeability/test_8.txt rename to tests/tools/check_upgradeability/test_8.txt diff --git a/tests/tools/check-upgradeability/test_9.txt b/tests/tools/check_upgradeability/test_9.txt similarity index 100% rename from tests/tools/check-upgradeability/test_9.txt rename to tests/tools/check_upgradeability/test_9.txt diff --git a/tests/tools/read-storage/conftest.py b/tests/tools/read-storage/conftest.py new file mode 100644 index 000000000..3e2cfb400 --- /dev/null +++ b/tests/tools/read-storage/conftest.py @@ -0,0 +1,56 @@ +""" +Testing utilities for the read-storage tool +""" + +import shutil +import subprocess +from time import sleep +from typing import Generator +from dataclasses import dataclass +from web3 import Web3 +import pytest + + +@dataclass +class GanacheInstance: + def __init__(self, provider: str, eth_address: str, eth_privkey: str): + self.provider = provider + self.eth_address = eth_address + self.eth_privkey = eth_privkey + + +@pytest.fixture(scope="module", name="ganache") +def fixture_ganache() -> Generator[GanacheInstance, None, None]: + """Fixture that runs ganache""" + if not shutil.which("ganache"): + raise Exception( + "ganache was not found in PATH, you can install it with `npm install -g ganache`" + ) + + # Address #1 when ganache is run with `--wallet.seed test`, it starts with 1000 ETH + eth_address = "0xae17D2dD99e07CA3bF2571CCAcEAA9e2Aefc2Dc6" + eth_privkey = "0xe48ba530a63326818e116be262fd39ae6dcddd89da4b1f578be8afd4e8894b8d" + eth = int(1e18 * 1e6) + port = 8545 + with subprocess.Popen( + f"""ganache + --port {port} + --chain.networkId 1 + --chain.chainId 1 + --account {eth_privkey},{eth} + """.replace( + "\n", " " + ), + shell=True, + ) as p: + + sleep(3) + yield GanacheInstance(f"http://127.0.0.1:{port}", eth_address, eth_privkey) + p.kill() + p.wait() + + +@pytest.fixture(scope="module", name="web3") +def fixture_web3(ganache: GanacheInstance): + w3 = Web3(Web3.HTTPProvider(ganache.provider, request_kwargs={"timeout": 30})) + return w3 diff --git a/tests/tools/read-storage/test_data/storage_layout-0.8.10.sol b/tests/tools/read-storage/test_data/StorageLayout.sol similarity index 95% rename from tests/tools/read-storage/test_data/storage_layout-0.8.10.sol rename to tests/tools/read-storage/test_data/StorageLayout.sol index 28d1428eb..0940b6769 100644 --- a/tests/tools/read-storage/test_data/storage_layout-0.8.10.sol +++ b/tests/tools/read-storage/test_data/StorageLayout.sol @@ -1,5 +1,6 @@ +pragma solidity 0.8.10; // overwrite abi and bin: -// solc tests/storage-layout/storage_layout-0.8.10.sol --abi --bin -o tests/storage-layout --overwrite +// solc StorageLayout.sol --abi --bin --overwrite contract StorageLayout { uint248 packedUint = 1; bool packedBool = true; diff --git a/tests/tools/read-storage/test_data/TEST_unstructured_storage.json b/tests/tools/read-storage/test_data/TEST_unstructured_storage.json new file mode 100644 index 000000000..6dbdbddca --- /dev/null +++ b/tests/tools/read-storage/test_data/TEST_unstructured_storage.json @@ -0,0 +1,56 @@ +{ + "masterCopy": { + "name": "masterCopy", + "type_string": "address", + "slot": 0, + "size": 160, + "offset": 0, + "value": "0x0000000000000000000000000000000000000000", + "elems": {} + }, + "ADMIN_SLOT": { + "name": "ADMIN_SLOT", + "type_string": "address", + "slot": 7616251639890160809447714111544359812065171195189364993079081710756264753419, + "size": 160, + "offset": 0, + "value": "0xae17D2dD99e07CA3bF2571CCAcEAA9e2Aefc2Dc6", + "elems": {} + }, + "IMPLEMENTATION_SLOT": { + "name": "IMPLEMENTATION_SLOT", + "type_string": "address", + "slot": 24440054405305269366569402256811496959409073762505157381672968839269610695612, + "size": 160, + "offset": 0, + "value": "0x54006763154c764da4AF42a8c3cfc25Ea29765D5", + "elems": {} + }, + "ROLLBACK_SLOT": { + "name": "ROLLBACK_SLOT", + "type_string": "bool", + "slot": 33048860383849004559742813297059419343339852917517107368639918720169455489347, + "size": 1, + "offset": 0, + "value": true, + "elems": {} + }, + "BEACON_SLOT": { + "name": "BEACON_SLOT", + "type_string": "address", + "slot": 74152234768234802001998023604048924213078445070507226371336425913862612794704, + "size": 160, + "offset": 0, + "value": "0x54006763154c764da4AF42a8c3cfc25Ea29765D5", + "elems": {} + }, + "fallback_sload_hardcoded": { + "name": "fallback_sload_hardcoded", + "type_string": "address", + "slot": 89532207833283453166981358064394884954800891875771469636219037672473505217783, + "size": 160, + "offset": 0, + "value": "0x54006763154c764da4AF42a8c3cfc25Ea29765D5", + "elems": {} + } +} \ No newline at end of file diff --git a/tests/tools/read-storage/test_data/UnstructuredStorageLayout.abi b/tests/tools/read-storage/test_data/UnstructuredStorageLayout.abi new file mode 100644 index 000000000..9b579f254 --- /dev/null +++ b/tests/tools/read-storage/test_data/UnstructuredStorageLayout.abi @@ -0,0 +1 @@ +[{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"store","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/tests/tools/read-storage/test_data/UnstructuredStorageLayout.bin b/tests/tools/read-storage/test_data/UnstructuredStorageLayout.bin new file mode 100644 index 000000000..9f20de74c --- /dev/null +++ b/tests/tools/read-storage/test_data/UnstructuredStorageLayout.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b5061030b806100206000396000f3fe608060405234801561001057600080fd5b506004361061002f5760003560e01c8063975057e71461009757610030565b5b600180035473ffffffffffffffffffffffffffffffffffffffff600054167fc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7543660008037600080366000845af43d806000803e816000811461009257816000f35b816000fd5b61009f6100a1565b005b60006100ab6101a8565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146100e657600080fd5b60007f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b9050600033905080825560007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905060007354006763154c764da4af42a8c3cfc25ea29765d59050808255807fc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf75561018460016101d6565b6101a17354006763154c764da4af42a8c3cfc25ea29765d5610220565b5050505050565b6000807f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b9050805491505090565b806102037f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b61025e565b60000160006101000a81548160ff02191690831515021790555050565b600060017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5160001c61025291906102a1565b60001b90508181555050565b6000819050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006102ac82610268565b91506102b783610268565b9250828210156102ca576102c9610272565b5b82820390509291505056fea2646970667358221220f079473c1b94744ac2818f521ccef06187a433d996633e61e51a86dfb60cc6ff64736f6c634300080a0033 \ No newline at end of file diff --git a/tests/tools/read-storage/test_data/UnstructuredStorageLayout.sol b/tests/tools/read-storage/test_data/UnstructuredStorageLayout.sol new file mode 100644 index 000000000..81b14a119 --- /dev/null +++ b/tests/tools/read-storage/test_data/UnstructuredStorageLayout.sol @@ -0,0 +1,141 @@ +pragma solidity 0.8.10; +// overwrite abi and bin: +// solc UnstructuredStorageLayout.sol --abi --bin --overwrite + +library StorageSlot { + struct AddressSlot { + address value; + } + + struct BooleanSlot { + bool value; + } + + struct Bytes32Slot { + bytes32 value; + } + + struct Uint256Slot { + uint256 value; + } + + /** + * @dev Returns an `AddressSlot` with member `value` located at `slot`. + */ + function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { + /// @solidity memory-safe-assembly + assembly { + r.slot := slot + } + } + + /** + * @dev Returns an `BooleanSlot` with member `value` located at `slot`. + */ + function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { + /// @solidity memory-safe-assembly + assembly { + r.slot := slot + } + } + + /** + * @dev Returns an `Bytes32Slot` with member `value` located at `slot`. + */ + function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { + /// @solidity memory-safe-assembly + assembly { + r.slot := slot + } + } + + /** + * @dev Returns an `Uint256Slot` with member `value` located at `slot`. + */ + function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { + /// @solidity memory-safe-assembly + assembly { + r.slot := slot + } + } +} + +contract UnstructuredStorageLayout { + + bytes32 constant ADMIN_SLOT = keccak256("org.zeppelinos.proxy.admin"); + // This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1. + bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; + // This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1 + bytes32 private constant ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143; + bytes32 constant BEACON_SLOT = bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1); + + address internal masterCopy; + + function _admin() internal view returns (address admin) { + bytes32 slot = ADMIN_SLOT; + assembly { + admin := sload(slot) + } + } + + function _implementation() internal view returns (address) { + address _impl; + bytes32 slot = IMPLEMENTATION_SLOT; + assembly { + _impl := sload(slot) + } + return _impl; + } + + function _set_rollback(bool _rollback) internal { + StorageSlot.getBooleanSlot(ROLLBACK_SLOT).value = _rollback; + } + + function _set_beacon(address _beacon) internal { + bytes32 slot = bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1); + assembly { + sstore(slot, _beacon) + } + } + + function store() external { + address admin = _admin(); + require(admin == address(0)); + + bytes32 admin_slot = ADMIN_SLOT; + address sender = msg.sender; + assembly { + sstore(admin_slot, sender) + } + + bytes32 impl_slot = IMPLEMENTATION_SLOT; + address _impl = address(0x0054006763154c764da4af42a8c3cfc25ea29765d5); + assembly { + sstore(impl_slot, _impl) + sstore(0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7, _impl) + } + + _set_rollback(true); + _set_beacon(address(0x0054006763154c764da4af42a8c3cfc25ea29765d5)); + } + + // Code position in storage is keccak256("PROXIABLE") = "0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7" + fallback() external { + assembly { // solium-disable-line + let nonsense := sload(sub(1,1)) + let _masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff) + let contractLogic := sload(0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7) + calldatacopy(0x0, 0x0, calldatasize()) + let success := delegatecall(gas(), contractLogic, 0x0, calldatasize(), 0, 0) + let retSz := returndatasize() + returndatacopy(0, 0, retSz) + switch success + case 0 { + revert(0, retSz) + } + default { + return(0, retSz) + } + } + } +} diff --git a/tests/tools/read-storage/test_read_storage.py b/tests/tools/read-storage/test_read_storage.py index ea04a91fe..b056ad056 100644 --- a/tests/tools/read-storage/test_read_storage.py +++ b/tests/tools/read-storage/test_read_storage.py @@ -1,14 +1,9 @@ -import json import re -import shutil -import subprocess -from time import sleep +import json from pathlib import Path -from typing import Generator import pytest from deepdiff import DeepDiff -from web3 import Web3 from web3.contract import Contract from slither import Slither @@ -16,50 +11,6 @@ from slither.tools.read_storage import SlitherReadStorage, RpcInfo TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" -# pylint: disable=too-few-public-methods -class GanacheInstance: - def __init__(self, provider: str, eth_address: str, eth_privkey: str): - self.provider = provider - self.eth_address = eth_address - self.eth_privkey = eth_privkey - - -@pytest.fixture(scope="module", name="web3") -def fixture_web3(ganache: GanacheInstance): - w3 = Web3(Web3.HTTPProvider(ganache.provider, request_kwargs={"timeout": 30})) - return w3 - - -@pytest.fixture(scope="module", name="ganache") -def fixture_ganache() -> Generator[GanacheInstance, None, None]: - """Fixture that runs ganache""" - if not shutil.which("ganache"): - raise Exception( - "ganache was not found in PATH, you can install it with `npm install -g ganache`" - ) - - # Address #1 when ganache is run with `--wallet.seed test`, it starts with 1000 ETH - eth_address = "0xae17D2dD99e07CA3bF2571CCAcEAA9e2Aefc2Dc6" - eth_privkey = "0xe48ba530a63326818e116be262fd39ae6dcddd89da4b1f578be8afd4e8894b8d" - eth = int(1e18 * 1e6) - port = 8545 - with subprocess.Popen( - f"""ganache - --port {port} - --chain.networkId 1 - --chain.chainId 1 - --account {eth_privkey},{eth} - """.replace( - "\n", " " - ), - shell=True, - ) as p: - - sleep(3) - yield GanacheInstance(f"http://127.0.0.1:{port}", eth_address, eth_privkey) - p.kill() - p.wait() - def get_source_file(file_path) -> str: with open(file_path, "r", encoding="utf8") as f: @@ -89,24 +40,29 @@ def deploy_contract(w3, ganache, contract_bin, contract_abi) -> Contract: # pylint: disable=too-many-locals +@pytest.mark.parametrize( + "test_contract, storage_file", + [("StorageLayout", "storage_layout"), ("UnstructuredStorageLayout", "unstructured_storage")], +) @pytest.mark.usefixtures("web3", "ganache") -def test_read_storage(web3, ganache, solc_binary_path) -> None: +def test_read_storage(test_contract, storage_file, web3, ganache, solc_binary_path) -> None: solc_path = solc_binary_path(version="0.8.10") assert web3.is_connected() - bin_path = Path(TEST_DATA_DIR, "StorageLayout.bin").as_posix() - abi_path = Path(TEST_DATA_DIR, "StorageLayout.abi").as_posix() + bin_path = Path(TEST_DATA_DIR, f"{test_contract}.bin").as_posix() + abi_path = Path(TEST_DATA_DIR, f"{test_contract}.abi").as_posix() bytecode = get_source_file(bin_path) abi = get_source_file(abi_path) contract = deploy_contract(web3, ganache, bytecode, abi) contract.functions.store().transact({"from": ganache.eth_address}) address = contract.address - sl = Slither(Path(TEST_DATA_DIR, "storage_layout-0.8.10.sol").as_posix(), solc=solc_path) + sl = Slither(Path(TEST_DATA_DIR, f"{test_contract}.sol").as_posix(), solc=solc_path) contracts = sl.contracts rpc_info: RpcInfo = RpcInfo(ganache.provider) srs = SlitherReadStorage(contracts, 100, rpc_info) + srs.unstructured = True srs.storage_address = address srs.get_all_storage_variables() srs.get_storage_layout() @@ -116,7 +72,7 @@ def test_read_storage(web3, ganache, solc_binary_path) -> None: slot_infos_json = srs.to_json() json.dump(slot_infos_json, file, indent=4) - expected_file = Path(TEST_DATA_DIR, "TEST_storage_layout.json").as_posix() + expected_file = Path(TEST_DATA_DIR, f"TEST_{storage_file}.json").as_posix() with open(expected_file, "r", encoding="utf8") as f: expected = json.load(f) diff --git a/tests/unit/core/test_constant_folding.py b/tests/unit/core/test_constant_folding.py index 489b4e0ec..6c0cc8295 100644 --- a/tests/unit/core/test_constant_folding.py +++ b/tests/unit/core/test_constant_folding.py @@ -21,39 +21,40 @@ def test_constant_folding_rational(solc_binary_path): variable_a = contract.get_state_variable_from_name("a") assert str(variable_a.type) == "uint256" - assert str(ConstantFolding(variable_a.expression, "uint256").result()) == "10" + assert ConstantFolding(variable_a.expression, "uint256").result().value == 10 variable_b = contract.get_state_variable_from_name("b") assert str(variable_b.type) == "int128" - assert str(ConstantFolding(variable_b.expression, "int128").result()) == "2" + assert ConstantFolding(variable_b.expression, "int128").result().value == 2 variable_c = contract.get_state_variable_from_name("c") assert str(variable_c.type) == "int64" - assert str(ConstantFolding(variable_c.expression, "int64").result()) == "3" + assert ConstantFolding(variable_c.expression, "int64").result().value == 3 variable_d = contract.get_state_variable_from_name("d") assert str(variable_d.type) == "int256" - assert str(ConstantFolding(variable_d.expression, "int256").result()) == "1500" + assert ConstantFolding(variable_d.expression, "int256").result().value == 1500 variable_e = contract.get_state_variable_from_name("e") assert str(variable_e.type) == "uint256" assert ( - str(ConstantFolding(variable_e.expression, "uint256").result()) - == "57896044618658097711785492504343953926634992332820282019728792003956564819968" + ConstantFolding(variable_e.expression, "uint256").result().value + == 57896044618658097711785492504343953926634992332820282019728792003956564819968 ) variable_f = contract.get_state_variable_from_name("f") assert str(variable_f.type) == "uint256" assert ( - str(ConstantFolding(variable_f.expression, "uint256").result()) - == "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ConstantFolding(variable_f.expression, "uint256").result().value + == 115792089237316195423570985008687907853269984665640564039457584007913129639935 ) variable_g = contract.get_state_variable_from_name("g") assert str(variable_g.type) == "int64" - assert str(ConstantFolding(variable_g.expression, "int64").result()) == "-7" + assert ConstantFolding(variable_g.expression, "int64").result().value == -7 +# pylint: disable=too-many-locals def test_constant_folding_binary_expressions(solc_binary_path): sl = Slither( Path(CONSTANT_FOLDING_TEST_ROOT, "constant_folding_binop.sol").as_posix(), @@ -63,51 +64,65 @@ def test_constant_folding_binary_expressions(solc_binary_path): variable_a = contract.get_state_variable_from_name("a") assert str(variable_a.type) == "uint256" - assert str(ConstantFolding(variable_a.expression, "uint256").result()) == "0" + assert ConstantFolding(variable_a.expression, "uint256").result().value == 0 variable_b = contract.get_state_variable_from_name("b") assert str(variable_b.type) == "uint256" - assert str(ConstantFolding(variable_b.expression, "uint256").result()) == "3" + assert ConstantFolding(variable_b.expression, "uint256").result().value == 3 variable_c = contract.get_state_variable_from_name("c") assert str(variable_c.type) == "uint256" - assert str(ConstantFolding(variable_c.expression, "uint256").result()) == "3" + assert ConstantFolding(variable_c.expression, "uint256").result().value == 3 variable_d = contract.get_state_variable_from_name("d") assert str(variable_d.type) == "bool" - assert str(ConstantFolding(variable_d.expression, "bool").result()) == "False" + assert ConstantFolding(variable_d.expression, "bool").result().value is False variable_e = contract.get_state_variable_from_name("e") assert str(variable_e.type) == "bool" - assert str(ConstantFolding(variable_e.expression, "bool").result()) == "False" + assert ConstantFolding(variable_e.expression, "bool").result().value is False variable_f = contract.get_state_variable_from_name("f") assert str(variable_f.type) == "bool" - assert str(ConstantFolding(variable_f.expression, "bool").result()) == "True" + assert ConstantFolding(variable_f.expression, "bool").result().value is True variable_g = contract.get_state_variable_from_name("g") assert str(variable_g.type) == "bool" - assert str(ConstantFolding(variable_g.expression, "bool").result()) == "False" + assert ConstantFolding(variable_g.expression, "bool").result().value is False variable_h = contract.get_state_variable_from_name("h") assert str(variable_h.type) == "bool" - assert str(ConstantFolding(variable_h.expression, "bool").result()) == "False" + assert ConstantFolding(variable_h.expression, "bool").result().value is False variable_i = contract.get_state_variable_from_name("i") assert str(variable_i.type) == "bool" - assert str(ConstantFolding(variable_i.expression, "bool").result()) == "True" + assert ConstantFolding(variable_i.expression, "bool").result().value is True variable_j = contract.get_state_variable_from_name("j") assert str(variable_j.type) == "bool" - assert str(ConstantFolding(variable_j.expression, "bool").result()) == "False" + assert ConstantFolding(variable_j.expression, "bool").result().value is False variable_k = contract.get_state_variable_from_name("k") assert str(variable_k.type) == "bool" - assert str(ConstantFolding(variable_k.expression, "bool").result()) == "True" + assert ConstantFolding(variable_k.expression, "bool").result().value is True variable_l = contract.get_state_variable_from_name("l") assert str(variable_l.type) == "uint256" assert ( - str(ConstantFolding(variable_l.expression, "uint256").result()) - == "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ConstantFolding(variable_l.expression, "uint256").result().value + == 115792089237316195423570985008687907853269984665640564039457584007913129639935 ) + + IMPLEMENTATION_SLOT = contract.get_state_variable_from_name("IMPLEMENTATION_SLOT") + assert str(IMPLEMENTATION_SLOT.type) == "bytes32" + assert ( + int.from_bytes( + ConstantFolding(IMPLEMENTATION_SLOT.expression, "bytes32").result().value, + byteorder="big", + ) + == 24440054405305269366569402256811496959409073762505157381672968839269610695612 + ) + + variable_m = contract.get_state_variable_from_name("m") + assert str(variable_m.type) == "bytes2" + assert ConstantFolding(variable_m.expression, "bytes2").result().value == "ab" diff --git a/tests/unit/core/test_data/constant_folding/constant_folding_binop.sol b/tests/unit/core/test_data/constant_folding/constant_folding_binop.sol index 923418ce7..3935585b8 100644 --- a/tests/unit/core/test_data/constant_folding/constant_folding_binop.sol +++ b/tests/unit/core/test_data/constant_folding/constant_folding_binop.sol @@ -11,4 +11,6 @@ contract BinOp { bool j = true && false; bool k = true || false; uint l = uint(1) - uint(2); + bytes32 IMPLEMENTATION_SLOT = bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1); + bytes2 m = "ab"; } \ No newline at end of file From eacbf5c224fb85a5f70263d32937700468ee28ff Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 20 Jun 2023 11:35:47 -0500 Subject: [PATCH 187/220] Create dependabot.yml (#1972) --- .github/dependabot.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..dd3015cbc --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +--- +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + target-branch: "dev" + schedule: + interval: "weekly" From d56f66338051eb07b2f280a1dd2f355ab6f95394 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 20 Jun 2023 11:36:16 -0500 Subject: [PATCH 188/220] create release action with sigstore (#1957) --- .github/workflows/publish.yml | 54 +++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 000000000..529752f80 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,54 @@ +name: Publish to PyPI + +on: + release: + types: [published] + +jobs: + build-release: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Build distributions + run: | + python -m pip install --upgrade pip + python -m pip install build + python -m build + - name: Upload distributions + uses: actions/upload-artifact@v3 + with: + name: slither-dists + path: dist/ + + publish: + runs-on: ubuntu-latest + environment: release + permissions: + id-token: write # For trusted publishing + codesigning. + contents: write # For attaching signing artifacts to the release. + needs: + - build-release + steps: + - name: fetch dists + uses: actions/download-artifact@v3 + with: + name: slither-dists + path: dist/ + + - name: publish + uses: pypa/gh-action-pypi-publish@v1.8.6 + + - name: sign + uses: sigstore/gh-action-sigstore-python@v1.2.3 + with: + inputs: ./dist/*.tar.gz ./dist/*.whl + release-signing-artifacts: true + bundle-only: true From 7f7ff770d7c558916fee1d530f6d5a0ec7e36e38 Mon Sep 17 00:00:00 2001 From: Paul Razvan Berg Date: Tue, 20 Jun 2023 21:56:44 +0300 Subject: [PATCH 189/220] docs: update recommendation for msg.value-inside-a-loop (#1971) --- slither/detectors/statements/msg_value_in_loop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/detectors/statements/msg_value_in_loop.py b/slither/detectors/statements/msg_value_in_loop.py index 55bd9bfc2..83c5658ca 100644 --- a/slither/detectors/statements/msg_value_in_loop.py +++ b/slither/detectors/statements/msg_value_in_loop.py @@ -79,7 +79,7 @@ contract MsgValueInLoop{ # endregion wiki_exploit_scenario WIKI_RECOMMENDATION = """ -Track msg.value through a local variable and decrease its amount on every iteration/usage. +Provide an explicit array of amounts alongside the receivers array, and check that the sum of all amounts matches `msg.value`. """ def _detect(self) -> List[Output]: From 068eee83412ad15823be79900dfd1e033056d072 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 20 Jun 2023 17:25:40 -0500 Subject: [PATCH 190/220] add test --- tests/unit/core/test_arithmetic.py | 30 ++++++++++++++++++- .../arithmetic_usage/unchecked_scope.sol | 17 +++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 tests/unit/core/test_data/arithmetic_usage/unchecked_scope.sol diff --git a/tests/unit/core/test_arithmetic.py b/tests/unit/core/test_arithmetic.py index 6de63d767..f82885aa8 100644 --- a/tests/unit/core/test_arithmetic.py +++ b/tests/unit/core/test_arithmetic.py @@ -2,7 +2,8 @@ from pathlib import Path from slither import Slither from slither.utils.arithmetic import unchecked_arithemtic_usage - +from slither.slithir.operations import Binary, Unary, Assignment +from slither.slithir.variables.temporary import TemporaryVariable TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" / "arithmetic_usage" @@ -14,3 +15,30 @@ def test_arithmetic_usage(solc_binary_path) -> None: assert { f.source_mapping.content_hash for f in unchecked_arithemtic_usage(slither.contracts[0]) } == {"2b4bc73cf59d486dd9043e840b5028b679354dd9", "e4ecd4d0fda7e762d29aceb8425f2c5d4d0bf962"} + + +def test_arithmetic_usage(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.15") + slither = Slither(Path(TEST_DATA_DIR, "test.sol").as_posix(), solc=solc_path) + + assert { + f.source_mapping.content_hash for f in unchecked_arithemtic_usage(slither.contracts[0]) + } == {"2b4bc73cf59d486dd9043e840b5028b679354dd9", "e4ecd4d0fda7e762d29aceb8425f2c5d4d0bf962"} + + +def test_scope_is_checked(solc_binary_path) -> None: + solc_path = solc_binary_path("0.8.15") + slither = Slither(Path(TEST_DATA_DIR, "unchecked_scope.sol").as_posix(), solc=solc_path) + func = slither.get_contract_from_name("TestScope")[0].get_function_from_full_name( + "scope(uint256)" + ) + bin_op_is_checked = {} + for node in func.nodes: + for op in node.irs: + if isinstance(op, (Binary, Unary)): + bin_op_is_checked[op.lvalue] = op.node.scope.is_checked + if isinstance(op, Assignment) and isinstance(op.rvalue, TemporaryVariable): + if op.lvalue.name.startswith("checked"): + assert bin_op_is_checked[op.rvalue] is True + else: + assert bin_op_is_checked[op.rvalue] is False diff --git a/tests/unit/core/test_data/arithmetic_usage/unchecked_scope.sol b/tests/unit/core/test_data/arithmetic_usage/unchecked_scope.sol new file mode 100644 index 000000000..f0cee1f10 --- /dev/null +++ b/tests/unit/core/test_data/arithmetic_usage/unchecked_scope.sol @@ -0,0 +1,17 @@ +contract TestScope { + function scope(uint256 x) public { + uint checked1 = x - x; + unchecked { + uint unchecked1 = x - x; + if (true) { + uint unchecked2 = x - x; + + } + for (uint i = 0; i < 10; i++) { + uint unchecked3 = x - x; + + } + } + uint checked2 = x - x; + } +} \ No newline at end of file From 96b103225f4867caca8fe699ab97ee8cc8727910 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Tue, 20 Jun 2023 17:34:14 -0500 Subject: [PATCH 191/220] fix merge/fmt --- slither/solc_parsing/declarations/function.py | 8 +++++--- tests/unit/core/test_arithmetic.py | 9 --------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/slither/solc_parsing/declarations/function.py b/slither/solc_parsing/declarations/function.py index aeb05cd05..35ca51aeb 100644 --- a/slither/solc_parsing/declarations/function.py +++ b/slither/solc_parsing/declarations/function.py @@ -726,7 +726,9 @@ class FunctionSolc(CallerContextExpression): self._parse_catch(clause, node, catch_scope, False) return node - def _parse_catch(self, statement: Dict, node: NodeSolc, scope: Scope, add_param: bool) -> NodeSolc: + def _parse_catch( + self, statement: Dict, node: NodeSolc, scope: Scope, add_param: bool + ) -> NodeSolc: block = statement.get("block", None) if block is None: @@ -874,7 +876,7 @@ class FunctionSolc(CallerContextExpression): self.get_children("children"): [variable, init], } - new_node = self._parse_variable_definition(new_statement, new_node) + new_node = self._parse_variable_definition(new_statement, new_node, scope) else: # If we have # var (a, b) = f() @@ -893,7 +895,7 @@ class FunctionSolc(CallerContextExpression): variables.append(variable) new_node = self._parse_variable_definition_init_tuple( - new_statement, i, new_node + new_statement, i, new_node, scope ) i = i + 1 var_identifiers = [] diff --git a/tests/unit/core/test_arithmetic.py b/tests/unit/core/test_arithmetic.py index f82885aa8..760b6d397 100644 --- a/tests/unit/core/test_arithmetic.py +++ b/tests/unit/core/test_arithmetic.py @@ -8,15 +8,6 @@ from slither.slithir.variables.temporary import TemporaryVariable TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" / "arithmetic_usage" -def test_arithmetic_usage(solc_binary_path) -> None: - solc_path = solc_binary_path("0.8.15") - slither = Slither(Path(TEST_DATA_DIR, "test.sol").as_posix(), solc=solc_path) - - assert { - f.source_mapping.content_hash for f in unchecked_arithemtic_usage(slither.contracts[0]) - } == {"2b4bc73cf59d486dd9043e840b5028b679354dd9", "e4ecd4d0fda7e762d29aceb8425f2c5d4d0bf962"} - - def test_arithmetic_usage(solc_binary_path) -> None: solc_path = solc_binary_path("0.8.15") slither = Slither(Path(TEST_DATA_DIR, "test.sol").as_posix(), solc=solc_path) From 8e0e7b79e7603c73fa50e43342cf96e3cf57228d Mon Sep 17 00:00:00 2001 From: xfu Date: Wed, 21 Jun 2023 08:54:37 -0500 Subject: [PATCH 192/220] fix event canonical_name --- slither/core/declarations/event.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/core/declarations/event.py b/slither/core/declarations/event.py index 9d42ac224..1b58ff63b 100644 --- a/slither/core/declarations/event.py +++ b/slither/core/declarations/event.py @@ -45,7 +45,7 @@ class Event(ContractLevel, SourceMapping): Returns: str: contract.func_name(type1,type2) """ - return self.contract.name + self.full_name + return self.contract.name + "." + self.full_name @property def elems(self) -> List["EventVariable"]: From 1b5e2e932765316fba8a1166d893a9f1e8d9b746 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Wed, 21 Jun 2023 08:56:07 -0500 Subject: [PATCH 193/220] update detector tests to reflect event fmt --- ...lShadowing_0_4_25_shadowing_builtin_symbols_sol__0.txt | 4 ++-- ...lShadowing_0_5_16_shadowing_builtin_symbols_sol__0.txt | 4 ++-- ...alShadowing_0_4_25_shadowing_local_variable_sol__0.txt | 2 +- ...alShadowing_0_5_16_shadowing_local_variable_sol__0.txt | 2 +- ...alShadowing_0_6_11_shadowing_local_variable_sol__0.txt | 2 +- ...calShadowing_0_7_6_shadowing_local_variable_sol__0.txt | 2 +- ...r_NamingConvention_0_4_25_naming_convention_sol__0.txt | 4 ++-- ...r_NamingConvention_0_5_16_naming_convention_sol__0.txt | 4 ++-- ...r_NamingConvention_0_6_11_naming_convention_sol__0.txt | 4 ++-- ...or_NamingConvention_0_7_6_naming_convention_sol__0.txt | 4 ++-- ...edERC20EventParameters_0_4_25_erc20_indexed_sol__0.txt | 8 ++++---- ...edERC20EventParameters_0_5_16_erc20_indexed_sol__0.txt | 8 ++++---- ...edERC20EventParameters_0_6_11_erc20_indexed_sol__0.txt | 8 ++++---- ...xedERC20EventParameters_0_7_6_erc20_indexed_sol__0.txt | 8 ++++---- 14 files changed, 32 insertions(+), 32 deletions(-) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_4_25_shadowing_builtin_symbols_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_4_25_shadowing_builtin_symbols_sol__0.txt index 7c94735da..283b93ee5 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_4_25_shadowing_builtin_symbols_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_4_25_shadowing_builtin_symbols_sol__0.txt @@ -12,12 +12,12 @@ FurtherExtendedContract.this (tests/e2e/detectors/test_data/shadowing-builtin/0. BaseContract.now (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#5) (state variable) shadows built-in symbol" -BaseContractrevert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#7) (event) shadows built-in symbol" - ExtendedContract.assert(bool).msg (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#14) (local variable) shadows built-in symbol" ExtendedContract.assert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#13-15) (function) shadows built-in symbol" +BaseContract.revert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#7) (event) shadows built-in symbol" + FurtherExtendedContract.require().sha3 (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#26) (local variable) shadows built-in symbol" FurtherExtendedContract.blockhash (tests/e2e/detectors/test_data/shadowing-builtin/0.4.25/shadowing_builtin_symbols.sol#19) (state variable) shadows built-in symbol" diff --git a/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_5_16_shadowing_builtin_symbols_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_5_16_shadowing_builtin_symbols_sol__0.txt index f576e19e0..2780f9e62 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_5_16_shadowing_builtin_symbols_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_BuiltinSymbolShadowing_0_5_16_shadowing_builtin_symbols_sol__0.txt @@ -10,12 +10,12 @@ FurtherExtendedContract.this (tests/e2e/detectors/test_data/shadowing-builtin/0. BaseContract.now (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#5) (state variable) shadows built-in symbol" -BaseContractrevert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#7) (event) shadows built-in symbol" - ExtendedContract.assert(bool).msg (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#14) (local variable) shadows built-in symbol" ExtendedContract.assert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#13-15) (function) shadows built-in symbol" +BaseContract.revert(bool) (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#7) (event) shadows built-in symbol" + FurtherExtendedContract.require().sha3 (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#26) (local variable) shadows built-in symbol" FurtherExtendedContract.blockhash (tests/e2e/detectors/test_data/shadowing-builtin/0.5.16/shadowing_builtin_symbols.sol#19) (state variable) shadows built-in symbol" diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_4_25_shadowing_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_4_25_shadowing_local_variable_sol__0.txt index 913acf4ea..0f98475aa 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_4_25_shadowing_local_variable_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_4_25_shadowing_local_variable_sol__0.txt @@ -10,7 +10,7 @@ FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_dat - BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#5) (state variable) FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows: - - ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#13) (event) + - ExtendedContract.v() (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#13) (event) FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#25) shadows: - FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.4.25/shadowing_local_variable.sol#20-23) (modifier) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_5_16_shadowing_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_5_16_shadowing_local_variable_sol__0.txt index 7fcbe83d2..56d139bea 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_5_16_shadowing_local_variable_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_5_16_shadowing_local_variable_sol__0.txt @@ -10,7 +10,7 @@ FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_dat - BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#5) (state variable) FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows: - - ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#13) (event) + - ExtendedContract.v() (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#13) (event) FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#25) shadows: - FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.5.16/shadowing_local_variable.sol#20-23) (modifier) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_6_11_shadowing_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_6_11_shadowing_local_variable_sol__0.txt index b4de3265f..a52ac48af 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_6_11_shadowing_local_variable_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_6_11_shadowing_local_variable_sol__0.txt @@ -5,7 +5,7 @@ FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_dat - BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#5) (state variable) FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows: - - ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#13) (event) + - ExtendedContract.v() (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#13) (event) FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#25) shadows: - FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.6.11/shadowing_local_variable.sol#20-23) (modifier) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_7_6_shadowing_local_variable_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_7_6_shadowing_local_variable_sol__0.txt index 43ecfab68..e618b988c 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_7_6_shadowing_local_variable_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_LocalShadowing_0_7_6_shadowing_local_variable_sol__0.txt @@ -5,7 +5,7 @@ FurtherExtendedContract.shadowingParent(uint256).y (tests/e2e/detectors/test_dat - BaseContract.y (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#5) (state variable) FurtherExtendedContract.shadowingParent(uint256).v (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows: - - ExtendedContractv() (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#13) (event) + - ExtendedContract.v() (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#13) (event) FurtherExtendedContract.shadowingParent(uint256).w (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#25) shadows: - FurtherExtendedContract.w() (tests/e2e/detectors/test_data/shadowing-local/0.7.6/shadowing_local_variable.sol#20-23) (modifier) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_naming_convention_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_naming_convention_sol__0.txt index 0419c1b9a..ed4177ca1 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_naming_convention_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_4_25_naming_convention_sol__0.txt @@ -18,10 +18,10 @@ Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-co Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#56) is not in mixedCase -Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#23) is not in CapWords - Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#68) is single letter l, O, or I, which should not be used +Event naming.event_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#23) is not in CapWords + Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#41-43) is not in mixedCase Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.4.25/naming_convention.sol#30-33) is not in mixedCase diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_naming_convention_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_naming_convention_sol__0.txt index c5fd1f30f..35c11193f 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_naming_convention_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_5_16_naming_convention_sol__0.txt @@ -18,10 +18,10 @@ Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-co Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#56) is not in mixedCase -Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#23) is not in CapWords - Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#68) is single letter l, O, or I, which should not be used +Event naming.event_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#23) is not in CapWords + Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#41-43) is not in mixedCase Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.5.16/naming_convention.sol#30-33) is not in mixedCase diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_naming_convention_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_naming_convention_sol__0.txt index 1bbe28843..f692e211b 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_naming_convention_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_6_11_naming_convention_sol__0.txt @@ -18,10 +18,10 @@ Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-co Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#56) is not in mixedCase -Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#23) is not in CapWords - Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#68) is single letter l, O, or I, which should not be used +Event naming.event_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#23) is not in CapWords + Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#41-43) is not in mixedCase Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.6.11/naming_convention.sol#30-33) is not in mixedCase diff --git a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_naming_convention_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_naming_convention_sol__0.txt index 5f560ba51..af17cabe8 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_naming_convention_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_NamingConvention_0_7_6_naming_convention_sol__0.txt @@ -18,10 +18,10 @@ Parameter T.test(uint256,uint256)._used (tests/e2e/detectors/test_data/naming-co Variable T._myPublicVar (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#56) is not in mixedCase -Event namingevent_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#23) is not in CapWords - Variable T.O (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#68) is single letter l, O, or I, which should not be used +Event naming.event_(uint256) (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#23) is not in CapWords + Modifier naming.CantDo() (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#41-43) is not in mixedCase Function naming.GetOne() (tests/e2e/detectors/test_data/naming-convention/0.7.6/naming_convention.sol#30-33) is not in mixedCase diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_4_25_erc20_indexed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_4_25_erc20_indexed_sol__0.txt index a571ef77a..b4097bd10 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_4_25_erc20_indexed_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_4_25_erc20_indexed_sol__0.txt @@ -1,8 +1,8 @@ -ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#19)does not index parameter to +ERC20 event IERC20Bad.Approval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#20)does not index parameter owner -ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#20)does not index parameter owner +ERC20 event IERC20Bad.Transfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#19)does not index parameter from -ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#19)does not index parameter from +ERC20 event IERC20Bad.Approval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#20)does not index parameter spender -ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#20)does not index parameter spender +ERC20 event IERC20Bad.Transfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.4.25/erc20_indexed.sol#19)does not index parameter to diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_5_16_erc20_indexed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_5_16_erc20_indexed_sol__0.txt index 09171d188..77ab9c2bd 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_5_16_erc20_indexed_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_5_16_erc20_indexed_sol__0.txt @@ -1,8 +1,8 @@ -ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#19)does not index parameter to +ERC20 event IERC20Bad.Approval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#20)does not index parameter owner -ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#20)does not index parameter owner +ERC20 event IERC20Bad.Transfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#19)does not index parameter from -ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#19)does not index parameter from +ERC20 event IERC20Bad.Approval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#20)does not index parameter spender -ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#20)does not index parameter spender +ERC20 event IERC20Bad.Transfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.5.16/erc20_indexed.sol#19)does not index parameter to diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_6_11_erc20_indexed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_6_11_erc20_indexed_sol__0.txt index c0cbe9270..9e11f44c8 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_6_11_erc20_indexed_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_6_11_erc20_indexed_sol__0.txt @@ -1,8 +1,8 @@ -ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#19)does not index parameter to +ERC20 event IERC20Bad.Approval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#20)does not index parameter owner -ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#20)does not index parameter owner +ERC20 event IERC20Bad.Transfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#19)does not index parameter from -ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#19)does not index parameter from +ERC20 event IERC20Bad.Approval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#20)does not index parameter spender -ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#20)does not index parameter spender +ERC20 event IERC20Bad.Transfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.6.11/erc20_indexed.sol#19)does not index parameter to diff --git a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_7_6_erc20_indexed_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_7_6_erc20_indexed_sol__0.txt index 532a8b6cd..8083e8f71 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_7_6_erc20_indexed_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_UnindexedERC20EventParameters_0_7_6_erc20_indexed_sol__0.txt @@ -1,8 +1,8 @@ -ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#19)does not index parameter to +ERC20 event IERC20Bad.Approval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#20)does not index parameter owner -ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#20)does not index parameter owner +ERC20 event IERC20Bad.Transfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#19)does not index parameter from -ERC20 event IERC20BadTransfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#19)does not index parameter from +ERC20 event IERC20Bad.Approval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#20)does not index parameter spender -ERC20 event IERC20BadApproval(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#20)does not index parameter spender +ERC20 event IERC20Bad.Transfer(address,address,uint256) (tests/e2e/detectors/test_data/erc20-indexed/0.7.6/erc20_indexed.sol#19)does not index parameter to From e1febdd74ecd2c26fbf1524d872034b57b15e3e2 Mon Sep 17 00:00:00 2001 From: bossjoker1 <1397157763@qq.com> Date: Wed, 21 Jun 2023 09:34:59 -0500 Subject: [PATCH 194/220] Check the respective parameter's storage location for each argument --- .../compiler_bugs/array_by_reference.py | 13 ++++++----- ...rence_0_4_25_array_by_reference_sol__0.txt | 14 +++++++----- ...rence_0_5_16_array_by_reference_sol__0.txt | 14 +++++++----- ...rence_0_6_11_array_by_reference_sol__0.txt | 14 +++++++----- ...erence_0_7_6_array_by_reference_sol__0.txt | 14 +++++++----- .../0.4.25/array_by_reference.sol | 21 ++++++++++++++++++ .../0.4.25/array_by_reference.sol-0.4.25.zip | Bin 4879 -> 6184 bytes .../0.5.16/array_by_reference.sol | 21 ++++++++++++++++++ .../0.5.16/array_by_reference.sol-0.5.16.zip | Bin 4925 -> 6194 bytes .../0.6.11/array_by_reference.sol | 21 ++++++++++++++++++ .../0.6.11/array_by_reference.sol-0.6.11.zip | Bin 4841 -> 6086 bytes .../0.7.6/array_by_reference.sol | 21 ++++++++++++++++++ .../0.7.6/array_by_reference.sol-0.7.6.zip | Bin 4741 -> 5972 bytes 13 files changed, 124 insertions(+), 29 deletions(-) diff --git a/slither/detectors/compiler_bugs/array_by_reference.py b/slither/detectors/compiler_bugs/array_by_reference.py index 04dfe085a..47e2af581 100644 --- a/slither/detectors/compiler_bugs/array_by_reference.py +++ b/slither/detectors/compiler_bugs/array_by_reference.py @@ -133,7 +133,7 @@ As a result, Bob's usage of the contract is incorrect.""" continue # Verify one of these parameters is an array in storage. - for arg in ir.arguments: + for (param, arg) in zip(ir.function.parameters, ir.arguments): # Verify this argument is a variable that is an array type. if not isinstance(arg, (StateVariable, LocalVariable)): continue @@ -141,8 +141,11 @@ As a result, Bob's usage of the contract is incorrect.""" continue # If it is a state variable OR a local variable referencing storage, we add it to the list. - if isinstance(arg, StateVariable) or ( - isinstance(arg, LocalVariable) and arg.location == "storage" + if ( + isinstance(arg, StateVariable) + or (isinstance(arg, LocalVariable) and arg.location == "storage") + ) and ( + isinstance(param.type, ArrayType) and param.location != "storage" ): results.append((node, arg, ir.function)) return results @@ -165,9 +168,9 @@ As a result, Bob's usage of the contract is incorrect.""" calling_node.function, " passes array ", affected_argument, - "by reference to ", + " by reference to ", invoked_function, - "which only takes arrays by value\n", + " which only takes arrays by value\n", ] res = self.generate_result(info) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt index f056bea10..5cb8add39 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_4_25_array_by_reference_sol__0.txt @@ -1,12 +1,14 @@ -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23) which only takes arrays by value -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#2) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#39) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#25-28) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#11) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#21-23) which only takes arrays by value + +E.f() (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#57-61) passes array E.x (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#54) by reference to E.setByValue(uint256[1],uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol#63-66) which only takes arrays by value diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt index 4264c809a..6e97d8cc2 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_5_16_array_by_reference_sol__0.txt @@ -1,12 +1,14 @@ -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23) which only takes arrays by value -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#2) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#39) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#25-28) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#11) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#21-23) which only takes arrays by value + +E.f() (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#57-61) passes array E.x (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#54) by reference to E.setByValue(uint256[1],uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.5.16/array_by_reference.sol#63-66) which only takes arrays by value diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt index e71930b51..39574b5f5 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_6_11_array_by_reference_sol__0.txt @@ -1,12 +1,14 @@ -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23) which only takes arrays by value -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#2) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#39) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#25-28) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#11) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#21-23) which only takes arrays by value + +E.f() (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#57-61) passes array E.x (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#54) by reference to E.setByValue(uint256[1],uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.6.11/array_by_reference.sol#63-66) which only takes arrays by value diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt index 7c0f9ccd9..74ea36a0c 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ArrayByReference_0_7_6_array_by_reference_sol__0.txt @@ -1,12 +1,14 @@ -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23) which only takes arrays by value -D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28) which only takes arrays by value -C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value +C.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#2) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value +D.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#39) by reference to C.setByValueAndReturn(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#25-28) which only takes arrays by value -C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value +C.g() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#11) by reference to C.setByValue(uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#21-23) which only takes arrays by value + +E.f() (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#57-61) passes array E.x (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#54) by reference to E.setByValue(uint256[1],uint256[1]) (tests/e2e/detectors/test_data/array-by-reference/0.7.6/array_by_reference.sol#63-66) which only takes arrays by value diff --git a/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol b/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol index 304af6a48..c2707601a 100644 --- a/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol +++ b/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol @@ -48,4 +48,25 @@ contract D { } +} + +contract E { + uint[1] public x; // storage + uint[1] public y; // storage + + function f() public { + uint[1] memory temp; + setByValue(temp, x); // can set temp, but cannot set x + setByRef(temp, y); // can set temp and y + } + + function setByValue(uint[1] memory arr, uint[1] memory arr2) internal { + arr[0] = 1; + arr2[0] = 2; + } + + function setByRef(uint[1] memory arr, uint[1] storage arr2) internal { + arr[0] = 2; + arr2[0] = 3; + } } \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol-0.4.25.zip b/tests/e2e/detectors/test_data/array-by-reference/0.4.25/array_by_reference.sol-0.4.25.zip index d9daf8f4d7dc27c4f371b018a31cc9736180c278..96bdaa0f85c484feec1e0f47ea8e3409f0cd1dc9 100644 GIT binary patch delta 5938 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 G0001;R*ZlE From b89ca1a1e05130b05832fe3696799f88f86828e9 Mon Sep 17 00:00:00 2001 From: 0xGusMcCrae <0xGusMcCrae@protonmail.com> Date: Wed, 21 Jun 2023 15:30:41 -0400 Subject: [PATCH 195/220] linting --- slither/detectors/variables/similar_variables.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/detectors/variables/similar_variables.py b/slither/detectors/variables/similar_variables.py index 4aef01b03..dccaf09c4 100644 --- a/slither/detectors/variables/similar_variables.py +++ b/slither/detectors/variables/similar_variables.py @@ -77,7 +77,7 @@ class SimilarVarsDetection(AbstractDetector): _v2_name_lower = v2.name.lower() if _v1_name_lower != _v2_name_lower: if SimilarVarsDetection.similar(_v1_name_lower, _v2_name_lower): - ret.add((v1, v2)) + ret.add((v1, v2)) return ret From a6fb92f17962cb8811782921163561b94cb7a6bd Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 23 Jun 2023 09:19:31 +0200 Subject: [PATCH 196/220] Bound function search to first parameter type --- slither/solc_parsing/declarations/using_for_top_level.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/slither/solc_parsing/declarations/using_for_top_level.py b/slither/solc_parsing/declarations/using_for_top_level.py index 8ac5b4462..3b7bb280c 100644 --- a/slither/solc_parsing/declarations/using_for_top_level.py +++ b/slither/solc_parsing/declarations/using_for_top_level.py @@ -112,7 +112,12 @@ class UsingForTopLevelSolc(CallerContextExpression): # pylint: disable=too-few- self, operator: str, function_name: str, type_name: TypeAliasTopLevel ) -> None: for tl_function in self.compilation_unit.functions_top_level: - if tl_function.name == function_name: + # The library function is bound to the first parameter's type + if ( + tl_function.name == function_name + and tl_function.parameters + and type_name == tl_function.parameters[0].type + ): type_name.operators[operator] = tl_function break From 3f1db7af7799da2172b9b8e93b839131602ec91c Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 23 Jun 2023 09:21:03 +0200 Subject: [PATCH 197/220] Look for library functions in the current scope --- slither/solc_parsing/declarations/using_for_top_level.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slither/solc_parsing/declarations/using_for_top_level.py b/slither/solc_parsing/declarations/using_for_top_level.py index 3b7bb280c..fe72e5780 100644 --- a/slither/solc_parsing/declarations/using_for_top_level.py +++ b/slither/solc_parsing/declarations/using_for_top_level.py @@ -111,7 +111,7 @@ class UsingForTopLevelSolc(CallerContextExpression): # pylint: disable=too-few- def _analyze_operator( self, operator: str, function_name: str, type_name: TypeAliasTopLevel ) -> None: - for tl_function in self.compilation_unit.functions_top_level: + for tl_function in self._using_for.file_scope.functions: # The library function is bound to the first parameter's type if ( tl_function.name == function_name From f2accfd77d3d256be0e300c376abdbb7fc2443b9 Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 23 Jun 2023 09:32:26 +0200 Subject: [PATCH 198/220] Add test --- tests/e2e/solc_parsing/test_ast_parsing.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/e2e/solc_parsing/test_ast_parsing.py b/tests/e2e/solc_parsing/test_ast_parsing.py index b694d1044..307e6736f 100644 --- a/tests/e2e/solc_parsing/test_ast_parsing.py +++ b/tests/e2e/solc_parsing/test_ast_parsing.py @@ -458,6 +458,7 @@ ALL_TESTS = [ "assembly-functions.sol", ["0.6.9", "0.7.6", "0.8.16"], ), + Test("user_defined_operators-0.8.19.sol", ["0.8.19"]), ] # create the output folder if needed try: From ace672e27d1e97375cc7359b1f7a05d240a6ca6d Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 23 Jun 2023 09:41:29 +0200 Subject: [PATCH 199/220] Rename tests to run to ALL_TESTS --- tests/e2e/detectors/test_detectors.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/e2e/detectors/test_detectors.py b/tests/e2e/detectors/test_detectors.py index d003e7ce0..a34f1932e 100644 --- a/tests/e2e/detectors/test_detectors.py +++ b/tests/e2e/detectors/test_detectors.py @@ -56,7 +56,7 @@ def id_test(test_item: Test): return f"{test_item.detector.__name__}-{test_item.solc_ver}-{test_item.test_file}" -ALL_TEST_OBJECTS = [ +ALL_TESTS = [ Test( all_detectors.UninitializedFunctionPtrsConstructor, "uninitialized_function_ptr_constructor.sol", @@ -1656,7 +1656,7 @@ GENERIC_PATH = "/GENERIC_PATH" TEST_DATA_DIR = Path(__file__).resolve().parent / "test_data" # pylint: disable=too-many-locals -@pytest.mark.parametrize("test_item", ALL_TEST_OBJECTS, ids=id_test) +@pytest.mark.parametrize("test_item", ALL_TESTS, ids=id_test) def test_detector(test_item: Test, snapshot): test_dir_path = Path( TEST_DATA_DIR, @@ -1704,5 +1704,5 @@ if __name__ == "__main__": "To generate the zip artifacts run\n\tpython tests/e2e/tests/test_detectors.py --compile" ) elif sys.argv[1] == "--compile": - for next_test in ALL_TEST_OBJECTS: + for next_test in ALL_TESTS: _generate_compile(next_test, skip_existing=True) From 940a0a17d911af07dc2994dc224cdc1fc034973d Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 23 Jun 2023 09:42:49 +0200 Subject: [PATCH 200/220] Update CONTRIBUTING.md --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c00fda8aa..0ebaa8d05 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -81,7 +81,7 @@ For each new detector, at least one regression tests must be present. 1. Create a folder in `tests/e2e/detectors/test_data` with the detector's argument name. 2. Create a test contract in `tests/e2e/detectors/test_data//`. -3. Update `ALL_TEST` in `tests/e2e/detectors/test_detectors.py` +3. Update `ALL_TESTS` in `tests/e2e/detectors/test_detectors.py` 4. Run `python tests/e2e/detectors/test_detectors.py --compile` to create a zip file of the compilation artifacts. 5. `pytest tests/e2e/detectors/test_detectors.py --insta update-new`. This will generate a snapshot of the detector output in `tests/e2e/detectors/snapshots/`. If updating an existing detector, run `pytest tests/e2e/detectors/test_detectors.py --insta review` and accept or reject the updates. 6. Run `pytest tests/e2e/detectors/test_detectors.py` to ensure everything worked. Then, add and commit the files to git. @@ -97,8 +97,9 @@ For each new detector, at least one regression tests must be present. 1. Create a test in `tests/e2e/solc_parsing/` 2. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --compile`. This will compile the artifact in `tests/e2e/solc_parsing/compile`. Add the compiled artifact to git. -3. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --generate`. This will generate the json artifacts in `tests/e2e/solc_parsing/expected_json`. Add the generated files to git. -4. Run `pytest tests/e2e/solc_parsing/test_ast_parsing.py` and check that everything worked. +3. Update `ALL_TESTS` in `tests/e2e/solc_parsing/test_ast_parsing.py` +4. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --generate`. This will generate the json artifacts in `tests/e2e/solc_parsing/expected_json`. Add the generated files to git. +5. Run `pytest tests/e2e/solc_parsing/test_ast_parsing.py` and check that everything worked. > ##### Helpful commands for parsing tests > From e1fd6702f9bb41a16e664c3bcad340cbc3046e6c Mon Sep 17 00:00:00 2001 From: Simone Date: Fri, 23 Jun 2023 09:48:08 +0200 Subject: [PATCH 201/220] Minor --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0ebaa8d05..5cf02136b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -81,7 +81,7 @@ For each new detector, at least one regression tests must be present. 1. Create a folder in `tests/e2e/detectors/test_data` with the detector's argument name. 2. Create a test contract in `tests/e2e/detectors/test_data//`. -3. Update `ALL_TESTS` in `tests/e2e/detectors/test_detectors.py` +3. Update `ALL_TESTS` in `tests/e2e/detectors/test_detectors.py`. 4. Run `python tests/e2e/detectors/test_detectors.py --compile` to create a zip file of the compilation artifacts. 5. `pytest tests/e2e/detectors/test_detectors.py --insta update-new`. This will generate a snapshot of the detector output in `tests/e2e/detectors/snapshots/`. If updating an existing detector, run `pytest tests/e2e/detectors/test_detectors.py --insta review` and accept or reject the updates. 6. Run `pytest tests/e2e/detectors/test_detectors.py` to ensure everything worked. Then, add and commit the files to git. @@ -97,7 +97,7 @@ For each new detector, at least one regression tests must be present. 1. Create a test in `tests/e2e/solc_parsing/` 2. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --compile`. This will compile the artifact in `tests/e2e/solc_parsing/compile`. Add the compiled artifact to git. -3. Update `ALL_TESTS` in `tests/e2e/solc_parsing/test_ast_parsing.py` +3. Update `ALL_TESTS` in `tests/e2e/solc_parsing/test_ast_parsing.py`. 4. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --generate`. This will generate the json artifacts in `tests/e2e/solc_parsing/expected_json`. Add the generated files to git. 5. Run `pytest tests/e2e/solc_parsing/test_ast_parsing.py` and check that everything worked. From 8b0fd32cbe32b6e873bccc07de5231f8793e1686 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Fri, 23 Jun 2023 09:33:05 -0500 Subject: [PATCH 202/220] use enum instead of value in config, lint --- slither/__main__.py | 1 - slither/utils/command_line.py | 18 +++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/slither/__main__.py b/slither/__main__.py index 4fcfd896d..d9201a90d 100644 --- a/slither/__main__.py +++ b/slither/__main__.py @@ -36,7 +36,6 @@ from slither.utils.output_capture import StandardOutputCapture from slither.utils.colors import red, set_colorization_enabled from slither.utils.command_line import ( FailOnLevel, - migrate_config_options, output_detectors, output_results_to_markdown, output_detectors_json, diff --git a/slither/utils/command_line.py b/slither/utils/command_line.py index 8518ada4a..082472582 100644 --- a/slither/utils/command_line.py +++ b/slither/utils/command_line.py @@ -54,7 +54,7 @@ defaults_flag_in_config = { "exclude_low": False, "exclude_medium": False, "exclude_high": False, - "fail_on": FailOnLevel.PEDANTIC.value, + "fail_on": FailOnLevel.PEDANTIC, "json": None, "sarif": None, "json-types": ",".join(DEFAULT_JSON_OUTPUT_TYPES), @@ -118,22 +118,22 @@ def migrate_config_options(args: argparse.Namespace, key: str, elem): if key.startswith("fail_") and getattr(args, "fail_on") == defaults_flag_in_config["fail_on"]: if key == "fail_pedantic": pedantic_setting = elem - fail_on = pedantic_setting and FailOnLevel.PEDANTIC or FailOnLevel.NONE + fail_on = FailOnLevel.PEDANTIC if pedantic_setting else FailOnLevel.NONE setattr(args, "fail_on", fail_on) - logger.info( - "Migrating fail_pedantic: {} as fail_on: {}".format(pedantic_setting, fail_on.value) - ) - elif key == "fail_low" and elem == True: + logger.info(f"Migrating fail_pedantic: {pedantic_setting} as fail_on: {fail_on.value}") + elif key == "fail_low" and elem is True: logger.info("Migrating fail_low: true -> fail_on: low") setattr(args, "fail_on", FailOnLevel.LOW) - elif key == "fail_medium" and elem == True: + + elif key == "fail_medium" and elem is True: logger.info("Migrating fail_medium: true -> fail_on: medium") setattr(args, "fail_on", FailOnLevel.MEDIUM) - elif key == "fail_high" and elem == True: + + elif key == "fail_high" and elem is True: logger.info("Migrating fail_high: true -> fail_on: high") setattr(args, "fail_on", FailOnLevel.HIGH) else: - logger.warn(yellow("Key {} was deprecated but no migration was provided".format(key))) + logger.warning(yellow(f"Key {key} was deprecated but no migration was provided")) def output_to_markdown( From 14824e86485c4d7b63da7ef13b5ffa60485d56d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Jun 2023 16:32:15 +0000 Subject: [PATCH 203/220] Bump cachix/cachix-action from 10 to 12 Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from 10 to 12. - [Release notes](https://github.com/cachix/cachix-action/releases) - [Commits](https://github.com/cachix/cachix-action/compare/v10...v12) --- updated-dependencies: - dependency-name: cachix/cachix-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09582eed9..164aa5ba7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,7 +70,7 @@ jobs: - name: Set up cachix if: matrix.type == 'dapp' - uses: cachix/cachix-action@v10 + uses: cachix/cachix-action@v12 with: name: dapp From eec0c7ddce8dba70abf78e77a806d819573b7c8f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Jun 2023 16:32:18 +0000 Subject: [PATCH 204/220] Bump cachix/install-nix-action from 20 to 22 Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 20 to 22. - [Release notes](https://github.com/cachix/install-nix-action/releases) - [Commits](https://github.com/cachix/install-nix-action/compare/v20...v22) --- updated-dependencies: - dependency-name: cachix/install-nix-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09582eed9..ba5326f67 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,7 +66,7 @@ jobs: - name: Set up nix if: matrix.type == 'dapp' - uses: cachix/install-nix-action@v20 + uses: cachix/install-nix-action@v22 - name: Set up cachix if: matrix.type == 'dapp' From 3ed6f283d0bb592e21394779e7cea36ff1d51aa5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Jun 2023 16:32:25 +0000 Subject: [PATCH 205/220] Bump actions/deploy-pages from 1 to 2 Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 1 to 2. - [Release notes](https://github.com/actions/deploy-pages/releases) - [Commits](https://github.com/actions/deploy-pages/compare/v1...v2) --- updated-dependencies: - dependency-name: actions/deploy-pages dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 20676e031..f6d66aa0a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -43,4 +43,4 @@ jobs: path: './html/' - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v2 From c73ac8932a0cafd2f660b24a3f76189b960343e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Jun 2023 16:32:29 +0000 Subject: [PATCH 206/220] Bump docker/build-push-action from 3 to 4 Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3 to 4. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v3...v4) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 7e6f88f1e..4cb1adcb1 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -47,7 +47,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Docker Build and Push - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: platforms: linux/amd64,linux/arm64/v8,linux/arm/v7 target: final From 272c80182799cc9303b7f4185c191d7721e97dd7 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Fri, 23 Jun 2023 16:19:14 -0500 Subject: [PATCH 207/220] update readme's --- README.md | 210 ++++++++++++++------------- slither/tools/interface/README.md | 21 +++ slither/tools/interface/__main__.py | 9 +- slither/tools/read_storage/README.md | 33 +++-- 4 files changed, 159 insertions(+), 114 deletions(-) create mode 100644 slither/tools/interface/README.md diff --git a/README.md b/README.md index bce20bfb0..503f99f00 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Slither, the Solidity source analyzer + Logo [![Build Status](https://img.shields.io/github/actions/workflow/status/crytic/slither/ci.yml?branch=master)](https://github.com/crytic/slither/actions?query=workflow%3ACI) @@ -20,26 +21,29 @@ Slither is a Solidity static analysis framework written in Python3. It runs a su ## Features -* Detects vulnerable Solidity code with low false positives (see the list of [trophies](./trophies.md)) -* Identifies where the error condition occurs in the source code -* Easily integrates into continuous integration and Hardhat/Foundry builds -* Built-in 'printers' quickly report crucial contract information -* Detector API to write custom analyses in Python -* Ability to analyze contracts written with Solidity >= 0.4 -* Intermediate representation ([SlithIR](https://github.com/trailofbits/slither/wiki/SlithIR)) enables simple, high-precision analyses -* Correctly parses 99.9% of all public Solidity code -* Average execution time of less than 1 second per contract -* Integrates with Github's code scanning in [CI](https://github.com/marketplace/actions/slither-action) +- Detects vulnerable Solidity code with low false positives (see the list of [trophies](./trophies.md)) +- Identifies where the error condition occurs in the source code +- Easily integrates into continuous integration and Hardhat/Foundry builds +- Built-in 'printers' quickly report crucial contract information +- Detector API to write custom analyses in Python +- Ability to analyze contracts written with Solidity >= 0.4 +- Intermediate representation ([SlithIR](https://github.com/trailofbits/slither/wiki/SlithIR)) enables simple, high-precision analyses +- Correctly parses 99.9% of all public Solidity code +- Average execution time of less than 1 second per contract +- Integrates with Github's code scanning in [CI](https://github.com/marketplace/actions/slither-action) ## Usage Run Slither on a Hardhat/Foundry/Dapp/Brownie application: + ```bash slither . ``` + This is the preferred option if your project has dependencies as Slither relies on the underlying compilation framework to compile source code. However, you can run Slither on a single file that does not import dependencies: + ```bash slither tests/uninitialized.sol ``` @@ -79,118 +83,122 @@ docker run -it -v /home/share:/share trailofbits/eth-security-toolbox ``` ### Integration + - For GitHub action integration, use [slither-action](https://github.com/marketplace/actions/slither-action). - To generate a Markdown report, use `slither [target] --checklist`. - To generate a Markdown with GitHub source code highlighting, use `slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/` (replace `ORG`, `REPO`, `COMMIT`) ## Detectors - Num | Detector | What it Detects | Impact | Confidence --- | --- | --- | --- | --- 1 | `abiencoderv2-array` | [Storage abiencoderv2 array](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-abiencoderv2-array) | High | High 2 | `arbitrary-send-erc20` | [transferFrom uses arbitrary `from`](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom) | High | High 3 | `array-by-reference` | [Modifying storage array by value](https://github.com/crytic/slither/wiki/Detector-Documentation#modifying-storage-array-by-value) | High | High -4 | `incorrect-shift` | [The order of parameters in a shift instruction is incorrect.](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-shift-in-assembly) | High | High -5 | `multiple-constructors` | [Multiple constructor schemes](https://github.com/crytic/slither/wiki/Detector-Documentation#multiple-constructor-schemes) | High | High -6 | `name-reused` | [Contract's name reused](https://github.com/crytic/slither/wiki/Detector-Documentation#name-reused) | High | High -7 | `protected-vars` | [Detected unprotected variables](https://github.com/crytic/slither/wiki/Detector-Documentation#protected-variables) | High | High -8 | `public-mappings-nested` | [Public mappings with nested variables](https://github.com/crytic/slither/wiki/Detector-Documentation#public-mappings-with-nested-variables) | High | High -9 | `rtlo` | [Right-To-Left-Override control character is used](https://github.com/crytic/slither/wiki/Detector-Documentation#right-to-left-override-character) | High | High -10 | `shadowing-state` | [State variables shadowing](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing) | High | High -11 | `suicidal` | [Functions allowing anyone to destruct the contract](https://github.com/crytic/slither/wiki/Detector-Documentation#suicidal) | High | High -12 | `uninitialized-state` | [Uninitialized state variables](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables) | High | High -13 | `uninitialized-storage` | [Uninitialized storage variables](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-storage-variables) | High | High -14 | `unprotected-upgrade` | [Unprotected upgradeable contract](https://github.com/crytic/slither/wiki/Detector-Documentation#unprotected-upgradeable-contract) | High | High -15 | `codex` | [Use Codex to find vulnerabilities.](https://github.com/crytic/slither/wiki/Detector-Documentation#codex) | High | Low -16 | `arbitrary-send-erc20-permit` | [transferFrom uses arbitrary from with permit](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom-used-with-permit) | High | Medium -17 | `arbitrary-send-eth` | [Functions that send Ether to arbitrary destinations](https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations) | High | Medium -18 | `controlled-array-length` | [Tainted array length assignment](https://github.com/crytic/slither/wiki/Detector-Documentation#array-length-assignment) | High | Medium -19 | `controlled-delegatecall` | [Controlled delegatecall destination](https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall) | High | Medium -20 | `delegatecall-loop` | [Payable functions using `delegatecall` inside a loop](https://github.com/crytic/slither/wiki/Detector-Documentation/#payable-functions-using-delegatecall-inside-a-loop) | High | Medium -21 | `msg-value-loop` | [msg.value inside a loop](https://github.com/crytic/slither/wiki/Detector-Documentation/#msgvalue-inside-a-loop) | High | Medium -22 | `reentrancy-eth` | [Reentrancy vulnerabilities (theft of ethers)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities) | High | Medium -23 | `storage-array` | [Signed storage integer array compiler bug](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-signed-integer-array) | High | Medium -24 | `unchecked-transfer` | [Unchecked tokens transfer](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer) | High | Medium -25 | `weak-prng` | [Weak PRNG](https://github.com/crytic/slither/wiki/Detector-Documentation#weak-PRNG) | High | Medium -26 | `domain-separator-collision` | [Detects ERC20 tokens that have a function whose signature collides with EIP-2612's DOMAIN_SEPARATOR()](https://github.com/crytic/slither/wiki/Detector-Documentation#domain-separator-collision) | Medium | High -27 | `enum-conversion` | [Detect dangerous enum conversion](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-enum-conversion) | Medium | High -28 | `erc20-interface` | [Incorrect ERC20 interfaces](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface) | Medium | High -29 | `erc721-interface` | [Incorrect ERC721 interfaces](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc721-interface) | Medium | High -30 | `incorrect-equality` | [Dangerous strict equalities](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities) | Medium | High -31 | `locked-ether` | [Contracts that lock ether](https://github.com/crytic/slither/wiki/Detector-Documentation#contracts-that-lock-ether) | Medium | High -32 | `mapping-deletion` | [Deletion on mapping containing a structure](https://github.com/crytic/slither/wiki/Detector-Documentation#deletion-on-mapping-containing-a-structure) | Medium | High -33 | `shadowing-abstract` | [State variables shadowing from abstract contracts](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing-from-abstract-contracts) | Medium | High -34 | `tautology` | [Tautology or contradiction](https://github.com/crytic/slither/wiki/Detector-Documentation#tautology-or-contradiction) | Medium | High -35 | `write-after-write` | [Unused write](https://github.com/crytic/slither/wiki/Detector-Documentation#write-after-write) | Medium | High -36 | `boolean-cst` | [Misuse of Boolean constant](https://github.com/crytic/slither/wiki/Detector-Documentation#misuse-of-a-boolean-constant) | Medium | Medium -37 | `constant-function-asm` | [Constant functions using assembly code](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-using-assembly-code) | Medium | Medium -38 | `constant-function-state` | [Constant functions changing the state](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-changing-the-state) | Medium | Medium -39 | `divide-before-multiply` | [Imprecise arithmetic operations order](https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply) | Medium | Medium -40 | `reentrancy-no-eth` | [Reentrancy vulnerabilities (no theft of ethers)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1) | Medium | Medium -41 | `reused-constructor` | [Reused base constructor](https://github.com/crytic/slither/wiki/Detector-Documentation#reused-base-constructors) | Medium | Medium -42 | `tx-origin` | [Dangerous usage of `tx.origin`](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-usage-of-txorigin) | Medium | Medium -43 | `unchecked-lowlevel` | [Unchecked low-level calls](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-low-level-calls) | Medium | Medium -44 | `unchecked-send` | [Unchecked send](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-send) | Medium | Medium -45 | `uninitialized-local` | [Uninitialized local variables](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables) | Medium | Medium -46 | `unused-return` | [Unused return values](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return) | Medium | Medium -47 | `incorrect-modifier` | [Modifiers that can return the default value](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier) | Low | High -48 | `shadowing-builtin` | [Built-in symbol shadowing](https://github.com/crytic/slither/wiki/Detector-Documentation#builtin-symbol-shadowing) | Low | High -49 | `shadowing-local` | [Local variables shadowing](https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing) | Low | High -50 | `uninitialized-fptr-cst` | [Uninitialized function pointer calls in constructors](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-function-pointers-in-constructors) | Low | High -51 | `variable-scope` | [Local variables used prior their declaration](https://github.com/crytic/slither/wiki/Detector-Documentation#pre-declaration-usage-of-local-variables) | Low | High -52 | `void-cst` | [Constructor called not implemented](https://github.com/crytic/slither/wiki/Detector-Documentation#void-constructor) | Low | High -53 | `calls-loop` | [Multiple calls in a loop](https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop) | Low | Medium -54 | `events-access` | [Missing Events Access Control](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control) | Low | Medium -55 | `events-maths` | [Missing Events Arithmetic](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic) | Low | Medium -56 | `incorrect-unary` | [Dangerous unary expressions](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-unary-expressions) | Low | Medium -57 | `missing-zero-check` | [Missing Zero Address Validation](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation) | Low | Medium -58 | `reentrancy-benign` | [Benign reentrancy vulnerabilities](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2) | Low | Medium -59 | `reentrancy-events` | [Reentrancy vulnerabilities leading to out-of-order Events](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3) | Low | Medium -60 | `timestamp` | [Dangerous usage of `block.timestamp`](https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp) | Low | Medium -61 | `assembly` | [Assembly usage](https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage) | Informational | High -62 | `assert-state-change` | [Assert state change](https://github.com/crytic/slither/wiki/Detector-Documentation#assert-state-change) | Informational | High -63 | `boolean-equal` | [Comparison to boolean constant](https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality) | Informational | High -64 | `cyclomatic-complexity` | [Detects functions with high (> 11) cyclomatic complexity](https://github.com/crytic/slither/wiki/Detector-Documentation#cyclomatic-complexity) | Informational | High -65 | `deprecated-standards` | [Deprecated Solidity Standards](https://github.com/crytic/slither/wiki/Detector-Documentation#deprecated-standards) | Informational | High -66 | `erc20-indexed` | [Un-indexed ERC20 event parameters](https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters) | Informational | High -67 | `function-init-state` | [Function initializing state variables](https://github.com/crytic/slither/wiki/Detector-Documentation#function-initializing-state) | Informational | High -68 | `low-level-calls` | [Low level calls](https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls) | Informational | High -69 | `missing-inheritance` | [Missing inheritance](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance) | Informational | High -70 | `naming-convention` | [Conformity to Solidity naming conventions](https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions) | Informational | High -71 | `pragma` | [If different pragma directives are used](https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used) | Informational | High -72 | `redundant-statements` | [Redundant statements](https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements) | Informational | High -73 | `solc-version` | [Incorrect Solidity version](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity) | Informational | High -74 | `unimplemented-functions` | [Unimplemented functions](https://github.com/crytic/slither/wiki/Detector-Documentation#unimplemented-functions) | Informational | High -75 | `unused-state` | [Unused state variables](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable) | Informational | High -76 | `costly-loop` | [Costly operations in a loop](https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop) | Informational | Medium -77 | `dead-code` | [Functions that are not used](https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code) | Informational | Medium -78 | `reentrancy-unlimited-gas` | [Reentrancy vulnerabilities through send and transfer](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4) | Informational | Medium -79 | `similar-names` | [Variable names are too similar](https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar) | Informational | Medium -80 | `too-many-digits` | [Conformance to numeric notation best practices](https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits) | Informational | Medium -81 | `constable-states` | [State variables that could be declared constant](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant) | Optimization | High -82 | `external-function` | [Public function that could be declared external](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external) | Optimization | High -83 | `immutable-states` | [State variables that could be declared immutable](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable) | Optimization | High -84 | `var-read-using-this` | [Contract reads its own variable using `this`](https://github.com/crytic/slither/wiki/Vulnerabilities-Description#public-variable-read-in-external-context) | Optimization | High +4 | `encode-packed-collision` | [ABI encodePacked Collision](https://github.com/crytic/slither/wiki/Detector-Documentation#abi-encodePacked-collision) | High | High +5 | `incorrect-shift` | [The order of parameters in a shift instruction is incorrect.](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-shift-in-assembly) | High | High +6 | `multiple-constructors` | [Multiple constructor schemes](https://github.com/crytic/slither/wiki/Detector-Documentation#multiple-constructor-schemes) | High | High +7 | `name-reused` | [Contract's name reused](https://github.com/crytic/slither/wiki/Detector-Documentation#name-reused) | High | High +8 | `protected-vars` | [Detected unprotected variables](https://github.com/crytic/slither/wiki/Detector-Documentation#protected-variables) | High | High +9 | `public-mappings-nested` | [Public mappings with nested variables](https://github.com/crytic/slither/wiki/Detector-Documentation#public-mappings-with-nested-variables) | High | High +10 | `rtlo` | [Right-To-Left-Override control character is used](https://github.com/crytic/slither/wiki/Detector-Documentation#right-to-left-override-character) | High | High +11 | `shadowing-state` | [State variables shadowing](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing) | High | High +12 | `suicidal` | [Functions allowing anyone to destruct the contract](https://github.com/crytic/slither/wiki/Detector-Documentation#suicidal) | High | High +13 | `uninitialized-state` | [Uninitialized state variables](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables) | High | High +14 | `uninitialized-storage` | [Uninitialized storage variables](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-storage-variables) | High | High +15 | `unprotected-upgrade` | [Unprotected upgradeable contract](https://github.com/crytic/slither/wiki/Detector-Documentation#unprotected-upgradeable-contract) | High | High +16 | `codex` | [Use Codex to find vulnerabilities.](https://github.com/crytic/slither/wiki/Detector-Documentation#codex) | High | Low +17 | `arbitrary-send-erc20-permit` | [transferFrom uses arbitrary from with permit](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom-used-with-permit) | High | Medium +18 | `arbitrary-send-eth` | [Functions that send Ether to arbitrary destinations](https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations) | High | Medium +19 | `controlled-array-length` | [Tainted array length assignment](https://github.com/crytic/slither/wiki/Detector-Documentation#array-length-assignment) | High | Medium +20 | `controlled-delegatecall` | [Controlled delegatecall destination](https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall) | High | Medium +21 | `delegatecall-loop` | [Payable functions using `delegatecall` inside a loop](https://github.com/crytic/slither/wiki/Detector-Documentation/#payable-functions-using-delegatecall-inside-a-loop) | High | Medium +22 | `msg-value-loop` | [msg.value inside a loop](https://github.com/crytic/slither/wiki/Detector-Documentation/#msgvalue-inside-a-loop) | High | Medium +23 | `reentrancy-eth` | [Reentrancy vulnerabilities (theft of ethers)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities) | High | Medium +24 | `storage-array` | [Signed storage integer array compiler bug](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-signed-integer-array) | High | Medium +25 | `unchecked-transfer` | [Unchecked tokens transfer](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer) | High | Medium +26 | `weak-prng` | [Weak PRNG](https://github.com/crytic/slither/wiki/Detector-Documentation#weak-PRNG) | High | Medium +27 | `domain-separator-collision` | [Detects ERC20 tokens that have a function whose signature collides with EIP-2612's DOMAIN_SEPARATOR()](https://github.com/crytic/slither/wiki/Detector-Documentation#domain-separator-collision) | Medium | High +28 | `enum-conversion` | [Detect dangerous enum conversion](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-enum-conversion) | Medium | High +29 | `erc20-interface` | [Incorrect ERC20 interfaces](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface) | Medium | High +30 | `erc721-interface` | [Incorrect ERC721 interfaces](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc721-interface) | Medium | High +31 | `incorrect-equality` | [Dangerous strict equalities](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities) | Medium | High +32 | `locked-ether` | [Contracts that lock ether](https://github.com/crytic/slither/wiki/Detector-Documentation#contracts-that-lock-ether) | Medium | High +33 | `mapping-deletion` | [Deletion on mapping containing a structure](https://github.com/crytic/slither/wiki/Detector-Documentation#deletion-on-mapping-containing-a-structure) | Medium | High +34 | `shadowing-abstract` | [State variables shadowing from abstract contracts](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing-from-abstract-contracts) | Medium | High +35 | `tautology` | [Tautology or contradiction](https://github.com/crytic/slither/wiki/Detector-Documentation#tautology-or-contradiction) | Medium | High +36 | `write-after-write` | [Unused write](https://github.com/crytic/slither/wiki/Detector-Documentation#write-after-write) | Medium | High +37 | `boolean-cst` | [Misuse of Boolean constant](https://github.com/crytic/slither/wiki/Detector-Documentation#misuse-of-a-boolean-constant) | Medium | Medium +38 | `constant-function-asm` | [Constant functions using assembly code](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-using-assembly-code) | Medium | Medium +39 | `constant-function-state` | [Constant functions changing the state](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-changing-the-state) | Medium | Medium +40 | `divide-before-multiply` | [Imprecise arithmetic operations order](https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply) | Medium | Medium +41 | `reentrancy-no-eth` | [Reentrancy vulnerabilities (no theft of ethers)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1) | Medium | Medium +42 | `reused-constructor` | [Reused base constructor](https://github.com/crytic/slither/wiki/Detector-Documentation#reused-base-constructors) | Medium | Medium +43 | `tx-origin` | [Dangerous usage of `tx.origin`](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-usage-of-txorigin) | Medium | Medium +44 | `unchecked-lowlevel` | [Unchecked low-level calls](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-low-level-calls) | Medium | Medium +45 | `unchecked-send` | [Unchecked send](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-send) | Medium | Medium +46 | `uninitialized-local` | [Uninitialized local variables](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables) | Medium | Medium +47 | `unused-return` | [Unused return values](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return) | Medium | Medium +48 | `incorrect-modifier` | [Modifiers that can return the default value](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier) | Low | High +49 | `shadowing-builtin` | [Built-in symbol shadowing](https://github.com/crytic/slither/wiki/Detector-Documentation#builtin-symbol-shadowing) | Low | High +50 | `shadowing-local` | [Local variables shadowing](https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing) | Low | High +51 | `uninitialized-fptr-cst` | [Uninitialized function pointer calls in constructors](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-function-pointers-in-constructors) | Low | High +52 | `variable-scope` | [Local variables used prior their declaration](https://github.com/crytic/slither/wiki/Detector-Documentation#pre-declaration-usage-of-local-variables) | Low | High +53 | `void-cst` | [Constructor called not implemented](https://github.com/crytic/slither/wiki/Detector-Documentation#void-constructor) | Low | High +54 | `calls-loop` | [Multiple calls in a loop](https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop) | Low | Medium +55 | `events-access` | [Missing Events Access Control](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control) | Low | Medium +56 | `events-maths` | [Missing Events Arithmetic](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic) | Low | Medium +57 | `incorrect-unary` | [Dangerous unary expressions](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-unary-expressions) | Low | Medium +58 | `missing-zero-check` | [Missing Zero Address Validation](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation) | Low | Medium +59 | `reentrancy-benign` | [Benign reentrancy vulnerabilities](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2) | Low | Medium +60 | `reentrancy-events` | [Reentrancy vulnerabilities leading to out-of-order Events](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3) | Low | Medium +61 | `timestamp` | [Dangerous usage of `block.timestamp`](https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp) | Low | Medium +62 | `assembly` | [Assembly usage](https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage) | Informational | High +63 | `assert-state-change` | [Assert state change](https://github.com/crytic/slither/wiki/Detector-Documentation#assert-state-change) | Informational | High +64 | `boolean-equal` | [Comparison to boolean constant](https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality) | Informational | High +65 | `cyclomatic-complexity` | [Detects functions with high (> 11) cyclomatic complexity](https://github.com/crytic/slither/wiki/Detector-Documentation#cyclomatic-complexity) | Informational | High +66 | `deprecated-standards` | [Deprecated Solidity Standards](https://github.com/crytic/slither/wiki/Detector-Documentation#deprecated-standards) | Informational | High +67 | `erc20-indexed` | [Un-indexed ERC20 event parameters](https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters) | Informational | High +68 | `function-init-state` | [Function initializing state variables](https://github.com/crytic/slither/wiki/Detector-Documentation#function-initializing-state) | Informational | High +69 | `incorrect-using-for` | [Detects using-for statement usage when no function from a given library matches a given type](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-using-for-usage) | Informational | High +70 | `low-level-calls` | [Low level calls](https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls) | Informational | High +71 | `missing-inheritance` | [Missing inheritance](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance) | Informational | High +72 | `naming-convention` | [Conformity to Solidity naming conventions](https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions) | Informational | High +73 | `pragma` | [If different pragma directives are used](https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used) | Informational | High +74 | `redundant-statements` | [Redundant statements](https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements) | Informational | High +75 | `solc-version` | [Incorrect Solidity version](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity) | Informational | High +76 | `unimplemented-functions` | [Unimplemented functions](https://github.com/crytic/slither/wiki/Detector-Documentation#unimplemented-functions) | Informational | High +77 | `unused-state` | [Unused state variables](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable) | Informational | High +78 | `costly-loop` | [Costly operations in a loop](https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop) | Informational | Medium +79 | `dead-code` | [Functions that are not used](https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code) | Informational | Medium +80 | `reentrancy-unlimited-gas` | [Reentrancy vulnerabilities through send and transfer](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4) | Informational | Medium +81 | `similar-names` | [Variable names are too similar](https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar) | Informational | Medium +82 | `too-many-digits` | [Conformance to numeric notation best practices](https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits) | Informational | Medium +83 | `cache-array-length` | [Detects `for` loops that use `length` member of some storage array in their loop condition and don't modify it.](https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length) | Optimization | High +84 | `constable-states` | [State variables that could be declared constant](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant) | Optimization | High +85 | `external-function` | [Public function that could be declared external](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external) | Optimization | High +86 | `immutable-states` | [State variables that could be declared immutable](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable) | Optimization | High +87 | `var-read-using-this` | [Contract reads its own variable using `this`](https://github.com/crytic/slither/wiki/Detector-Documentation#public-variable-read-in-external-context) | Optimization | High For more information, see + - The [Detector Documentation](https://github.com/crytic/slither/wiki/Detector-Documentation) for details on each detector - The [Detection Selection](https://github.com/crytic/slither/wiki/Usage#detector-selection) to run only selected detectors. By default, all the detectors are run. - The [Triage Mode](https://github.com/crytic/slither/wiki/Usage#triage-mode) to filter individual results ## Printers - ### Quick Review Printers - `human-summary`: [Print a human-readable summary of the contracts](https://github.com/trailofbits/slither/wiki/Printer-documentation#human-summary) - `inheritance-graph`: [Export the inheritance graph of each contract to a dot file](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph) - `contract-summary`: [Print a summary of the contracts](https://github.com/trailofbits/slither/wiki/Printer-documentation#contract-summary) +15 | `loc` | [Count the total number lines of code (LOC), source lines of code (SLOC), and comment lines of code (CLOC) found in source files (SRC), dependencies (DEP), and test files (TEST).](https://github.com/trailofbits/slither/wiki/Printer-documentation#loc) ### In-Depth Review Printers - `call-graph`: [Export the call-graph of the contracts to a dot file](https://github.com/trailofbits/slither/wiki/Printer-documentation#call-graph) - `cfg`: [Export the CFG of each functions](https://github.com/trailofbits/slither/wiki/Printer-documentation#cfg) - `function-summary`: [Print a summary of the functions](https://github.com/trailofbits/slither/wiki/Printer-documentation#function-summary) - `vars-and-auth`: [Print the state variables written and the authorization of the functions](https://github.com/crytic/slither/wiki/Printer-documentation#variables-written-and-authorization) -- `when-not-paused`: [Print functions that do not use `whenNotPaused` modifier](https://github.com/trailofbits/slither/wiki/Printer-documentation#when-not-paused). +- `not-pausable`: [Print functions that do not use `whenNotPaused` modifier](https://github.com/trailofbits/slither/wiki/Printer-documentation#when-not-paused). To run a printer, use `--print` and a comma-separated list of printers. @@ -204,32 +212,36 @@ See the [Printer documentation](https://github.com/crytic/slither/wiki/Printer-d - `slither-check-erc`: [Check the ERC's conformance](https://github.com/crytic/slither/wiki/ERC-Conformance) - `slither-format`: [Automatic patch generation](https://github.com/crytic/slither/wiki/Slither-format) - `slither-read-storage`: [Read storage values from contracts](./slither/tools/read_storage/README.md) +- `slither-interface`: [Generate an interface for a contract](./slither/tools/interface/README.md) See the [Tool documentation](https://github.com/crytic/slither/wiki/Tool-Documentation) for additional tools. [Contact us](https://www.trailofbits.com/contact/) to get help on building custom tools. ## API Documentation + Documentation on Slither's internals is available [here](https://crytic.github.io/slither/slither.html). ## Getting Help Feel free to stop by our [Slack channel](https://empireslacking.herokuapp.com) (#ethereum) for help using or extending Slither. -* The [Printer documentation](https://github.com/trailofbits/slither/wiki/Printer-documentation) describes the information Slither is capable of visualizing for each contract. +- The [Printer documentation](https://github.com/trailofbits/slither/wiki/Printer-documentation) describes the information Slither is capable of visualizing for each contract. -* The [Detector documentation](https://github.com/trailofbits/slither/wiki/Adding-a-new-detector) describes how to write a new vulnerability analyses. +- The [Detector documentation](https://github.com/trailofbits/slither/wiki/Adding-a-new-detector) describes how to write a new vulnerability analyses. -* The [API documentation](https://github.com/crytic/slither/wiki/Python-API) describes the methods and objects available for custom analyses. +- The [API documentation](https://github.com/crytic/slither/wiki/Python-API) describes the methods and objects available for custom analyses. -* The [SlithIR documentation](https://github.com/trailofbits/slither/wiki/SlithIR) describes the SlithIR intermediate representation. +- The [SlithIR documentation](https://github.com/trailofbits/slither/wiki/SlithIR) describes the SlithIR intermediate representation. ## FAQ How do I exclude mocks or tests? + - View our documentation on [path filtering](https://github.com/crytic/slither/wiki/Usage#path-filtering). How do I fix "unknown file" or compilation issues? + - Because slither requires the solc AST, it must have all dependencies available. If a contract has dependencies, `slither contract.sol` will fail. Instead, use `slither .` in the parent directory of `contracts/` (you should see `contracts/` when you run `ls`). @@ -244,9 +256,11 @@ Slither is licensed and distributed under the AGPLv3 license. [Contact us](mailt ## Publications ### Trail of Bits publication + - [Slither: A Static Analysis Framework For Smart Contracts](https://arxiv.org/abs/1908.09878), Josselin Feist, Gustavo Grieco, Alex Groce - WETSEB '19 ### External publications + Title | Usage | Authors | Venue | Code --- | --- | --- | --- | --- [ReJection: A AST-Based Reentrancy Vulnerability Detection Method](https://www.researchgate.net/publication/339354823_ReJection_A_AST-Based_Reentrancy_Vulnerability_Detection_Method) | AST-based analysis built on top of Slither | Rui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia Chen | CTCIS 19 diff --git a/slither/tools/interface/README.md b/slither/tools/interface/README.md new file mode 100644 index 000000000..a77e780b0 --- /dev/null +++ b/slither/tools/interface/README.md @@ -0,0 +1,21 @@ +# Slither-interface + +Generates code for a Solidity interface from contract + +## Usage + +Run `slither-interface `. + +## CLI Interface +```shell +positional arguments: + contract_source The name of the contract (case sensitive) followed by the deployed contract address if verified on etherscan or project directory/filename for local contracts. + +optional arguments: + -h, --help show this help message and exit + --unroll-structs Whether to use structures' underlying types instead of the user-defined type + --exclude-events Excludes event signatures in the interface + --exclude-errors Excludes custom error signatures in the interface + --exclude-enums Excludes enum definitions in the interface + --exclude-structs Exclude struct definitions in the interface +``` \ No newline at end of file diff --git a/slither/tools/interface/__main__.py b/slither/tools/interface/__main__.py index e56c4b3eb..0705f0373 100644 --- a/slither/tools/interface/__main__.py +++ b/slither/tools/interface/__main__.py @@ -86,10 +86,11 @@ def main() -> None: ) # add version pragma - interface = ( - f"pragma solidity {_contract.compilation_unit.pragma_directives[0].version};\n\n" - + interface - ) + if _contract.compilation_unit.pragma_directives: + interface = ( + f"pragma solidity {_contract.compilation_unit.pragma_directives[0].version};\n\n" + + interface + ) # write interface to file export = Path("crytic-export", "interfaces") diff --git a/slither/tools/read_storage/README.md b/slither/tools/read_storage/README.md index 677b2c772..dd7ef2865 100644 --- a/slither/tools/read_storage/README.md +++ b/slither/tools/read_storage/README.md @@ -8,20 +8,29 @@ Slither-read-storage is a tool to retrieve the storage slots and values of entir ```shell positional arguments: - contract_source (DIR) ADDRESS The deployed contract address if verified on etherscan. Prepend project directory for unverified contracts. + contract_source The deployed contract address if verified on etherscan. Prepend project directory for unverified contracts. optional arguments: - --variable-name VARIABLE_NAME The name of the variable whose value will be returned. - --rpc-url RPC_URL An endpoint for web3 requests. - --key KEY The key/ index whose value will be returned from a mapping or array. - --deep-key DEEP_KEY The key/ index whose value will be returned from a deep mapping or multidimensional array. - --struct-var STRUCT_VAR The name of the variable whose value will be returned from a struct. - --storage-address STORAGE_ADDRESS The address of the storage contract (if a proxy pattern is used). - --contract-name CONTRACT_NAME The name of the logic contract. - --json FILE Write the entire storage layout in JSON format to the specified FILE - --value Toggle used to include values in output. - --max-depth MAX_DEPTH Max depth to search in data structure. - --block BLOCK_NUMBER Block number to retrieve storage from (requires archive rpc node) + -h, --help show this help message and exit + --variable-name VARIABLE_NAME + The name of the variable whose value will be returned. + --rpc-url RPC_URL An endpoint for web3 requests. + --key KEY The key/ index whose value will be returned from a mapping or array. + --deep-key DEEP_KEY The key/ index whose value will be returned from a deep mapping or multidimensional array. + --struct-var STRUCT_VAR + The name of the variable whose value will be returned from a struct. + --storage-address STORAGE_ADDRESS + The address of the storage contract (if a proxy pattern is used). + --contract-name CONTRACT_NAME + The name of the logic contract. + --json JSON Save the result in a JSON file. + --value Toggle used to include values in output. + --table Print table view of storage layout + --silent Silence log outputs + --max-depth MAX_DEPTH + Max depth to search in data structure. + --block BLOCK The block number to read storage from. Requires an archive node to be provided as the RPC url. + --unstructured Include unstructured storage slots ``` ### Examples From b6d1de43ca9abd1e9ed5e64da4cd6133fb240208 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Fri, 23 Jun 2023 16:31:26 -0500 Subject: [PATCH 208/220] fix bullet point --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 503f99f00..17fdb02b5 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ For more information, see - `human-summary`: [Print a human-readable summary of the contracts](https://github.com/trailofbits/slither/wiki/Printer-documentation#human-summary) - `inheritance-graph`: [Export the inheritance graph of each contract to a dot file](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph) - `contract-summary`: [Print a summary of the contracts](https://github.com/trailofbits/slither/wiki/Printer-documentation#contract-summary) -15 | `loc` | [Count the total number lines of code (LOC), source lines of code (SLOC), and comment lines of code (CLOC) found in source files (SRC), dependencies (DEP), and test files (TEST).](https://github.com/trailofbits/slither/wiki/Printer-documentation#loc) +- `loc`: [Count the total number lines of code (LOC), source lines of code (SLOC), and comment lines of code (CLOC) found in source files (SRC), dependencies (DEP), and test files (TEST).](https://github.com/trailofbits/slither/wiki/Printer-documentation#loc) ### In-Depth Review Printers - `call-graph`: [Export the call-graph of the contracts to a dot file](https://github.com/trailofbits/slither/wiki/Printer-documentation#call-graph) From 273cca4167ab0f057252c754a629e8d81af992c6 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Sat, 24 Jun 2023 10:50:11 -0500 Subject: [PATCH 209/220] fix logo on pypi (#1999) PyPI needs a link to properly render the logo xref https://github.com/pypi/warehouse/issues/5246 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 17fdb02b5..cb815561e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Slither, the Solidity source analyzer -Logo +Logo [![Build Status](https://img.shields.io/github/actions/workflow/status/crytic/slither/ci.yml?branch=master)](https://github.com/crytic/slither/actions?query=workflow%3ACI) [![Slack Status](https://empireslacking.herokuapp.com/badge.svg)](https://empireslacking.herokuapp.com) From cbe6716afde4696bc1c31dec36332db47cd89f93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Mon, 26 Jun 2023 18:53:43 -0300 Subject: [PATCH 210/220] Fix execution in Python 3.11 This fixes the following error: ValueError: mutable default for field src is not allowed: use default_factory --- slither/utils/loc.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/slither/utils/loc.py b/slither/utils/loc.py index 0e51dfa46..dde91578b 100644 --- a/slither/utils/loc.py +++ b/slither/utils/loc.py @@ -1,4 +1,4 @@ -from dataclasses import dataclass +from dataclasses import dataclass, field from pathlib import Path from typing import List, Tuple @@ -19,9 +19,9 @@ class LoCInfo: @dataclass class LoC: - src: LoCInfo = LoCInfo() - dep: LoCInfo = LoCInfo() - test: LoCInfo = LoCInfo() + src: LoCInfo = field(default_factory=LoCInfo) + dep: LoCInfo = field(default_factory=LoCInfo) + test: LoCInfo = field(default_factory=LoCInfo) def to_pretty_table(self) -> MyPrettyTable: table = MyPrettyTable(["", "src", "dep", "test"]) From fa5963239efe4022d307fb290e899dd0f19866c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Mon, 26 Jun 2023 19:00:14 -0300 Subject: [PATCH 211/220] workflows: ci: run on Python 3.8 ~ 3.11 --- .github/workflows/ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09582eed9..fcad34341 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,7 @@ jobs: fail-fast: false matrix: os: ["ubuntu-latest", "windows-2022"] + python: ["3.8", "3.9", "3.10", "3.11"] type: ["cli", "dapp", "data_dependency", @@ -53,10 +54,10 @@ jobs: type: truffle steps: - uses: actions/checkout@v3 - - name: Set up Python 3.8 + - name: Set up Python ${{ matrix.python }} uses: actions/setup-python@v3 with: - python-version: 3.8 + python-version: ${{ matrix.python }} - name: Install dependencies run: | pip install ".[test]" From af5e801973ec8a040f53b0cd453b949e659f6234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Mon, 26 Jun 2023 19:02:19 -0300 Subject: [PATCH 212/220] workflows: test: run on Python 3.8 ~ 3.11 --- .github/workflows/test.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a003eb168..e4de97197 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,12 +25,13 @@ jobs: matrix: os: ["ubuntu-latest", "windows-2022"] type: ["unit", "integration", "tool"] + python: ["3.8", "3.9", "3.10", "3.11"] steps: - uses: actions/checkout@v3 - - name: Set up Python 3.8 + - name: Set up Python ${{ matrix.python }} uses: actions/setup-python@v4 with: - python-version: 3.8 + python-version: ${{ matrix.python }} cache: "pip" cache-dependency-path: setup.py @@ -74,7 +75,7 @@ jobs: uses: ./.github/actions/upload-coverage # only aggregate test coverage over linux-based tests to avoid any OS-specific filesystem information stored in # coverage metadata. - if: ${{ matrix.os == 'ubuntu-latest' }} + if: ${{ matrix.os == 'ubuntu-latest' && matrix.python == '3.8' }} coverage: needs: From 98480090dba6e4595c61a1dcb9d05f75b28fefbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20L=C3=B3pez?= Date: Mon, 26 Jun 2023 19:14:35 -0300 Subject: [PATCH 213/220] workflows: ci, tests: only run on 3.8 and 3.11 for PRs This keeps CI jobs reasonable in PRs while testing the full set of versions in the scheduled jobs and merges to dev and master. --- .github/workflows/ci.yml | 2 +- .github/workflows/test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fcad34341..76438ec73 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: fail-fast: false matrix: os: ["ubuntu-latest", "windows-2022"] - python: ["3.8", "3.9", "3.10", "3.11"] + python: ${{ (github.event_name == 'pull_request' && fromJSON('["3.8", "3.11"]')) || fromJSON('["3.8", "3.9", "3.10", "3.11"]') }} type: ["cli", "dapp", "data_dependency", diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e4de97197..b3754bfd7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: matrix: os: ["ubuntu-latest", "windows-2022"] type: ["unit", "integration", "tool"] - python: ["3.8", "3.9", "3.10", "3.11"] + python: ${{ (github.event_name == 'pull_request' && fromJSON('["3.8", "3.11"]')) || fromJSON('["3.8", "3.9", "3.10", "3.11"]') }} steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python }} From 5c40c52ba1caae8e2de12b0742247248333e6007 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Sat, 1 Jul 2023 13:42:54 -0500 Subject: [PATCH 214/220] fix(cache-array-length): handle when `HighLevelCall` is a `StateVariable` --- .../operations/cache_array_length.py | 25 +++++++++++------- ...yLength_0_8_17_CacheArrayLength_sol__0.txt | 20 +++++++------- .../0.8.17/CacheArrayLength.sol | 6 +++++ .../0.8.17/CacheArrayLength.sol-0.8.17.zip | Bin 8898 -> 9536 bytes 4 files changed, 32 insertions(+), 19 deletions(-) diff --git a/slither/detectors/operations/cache_array_length.py b/slither/detectors/operations/cache_array_length.py index da73d3fd5..e4d8cf2c6 100644 --- a/slither/detectors/operations/cache_array_length.py +++ b/slither/detectors/operations/cache_array_length.py @@ -4,7 +4,6 @@ from slither.core.cfg.node import Node, NodeType from slither.core.declarations import Function from slither.core.expressions import BinaryOperation, Identifier, MemberAccess, UnaryOperation from slither.core.solidity_types import ArrayType -from slither.core.source_mapping.source_mapping import SourceMapping from slither.core.variables import StateVariable from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification from slither.slithir.operations import Length, Delete, HighLevelCall @@ -134,7 +133,12 @@ contract C and op.expression.expression.value == array ): return True - if isinstance(op, HighLevelCall) and not op.function.view and not op.function.pure: + if ( + isinstance(op, HighLevelCall) + and isinstance(op.function, Function) + and not op.function.view + and not op.function.pure + ): return True for son in node.sons: @@ -144,7 +148,7 @@ contract C return False @staticmethod - def _handle_loops(nodes: List[Node], non_optimal_array_len_usages: List[SourceMapping]) -> None: + def _handle_loops(nodes: List[Node], non_optimal_array_len_usages: List[Node]) -> None: """ For each loop, checks if it has a comparison with `length` array member and, if it has, checks whether that array size could potentially change in that loop. @@ -180,21 +184,21 @@ contract C non_optimal_array_len_usages.append(if_node) @staticmethod - def _get_non_optimal_array_len_usages_for_function(f: Function) -> List[SourceMapping]: + def _get_non_optimal_array_len_usages_for_function(f: Function) -> List[Node]: """ Finds non-optimal usages of array length in loop conditions in a given function. """ - non_optimal_array_len_usages: List[SourceMapping] = [] + non_optimal_array_len_usages: List[Node] = [] CacheArrayLength._handle_loops(f.nodes, non_optimal_array_len_usages) return non_optimal_array_len_usages @staticmethod - def _get_non_optimal_array_len_usages(functions: List[Function]) -> List[SourceMapping]: + def _get_non_optimal_array_len_usages(functions: List[Function]) -> List[Node]: """ Finds non-optimal usages of array length in loop conditions in given functions. """ - non_optimal_array_len_usages: List[SourceMapping] = [] + non_optimal_array_len_usages: List[Node] = [] for f in functions: non_optimal_array_len_usages += ( @@ -211,9 +215,10 @@ contract C ) for usage in non_optimal_array_len_usages: info = [ - "Loop condition at ", - usage, - " should use cached array length instead of referencing `length` member " + "Loop condition ", + f"`{usage.source_mapping.content}` ", + f"({usage.source_mapping}) ", + "should use cached array length instead of referencing `length` member " "of the storage array.\n ", ] res = self.generate_result(info) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt index 63d4b883c..456c702a5 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_CacheArrayLength_0_8_17_CacheArrayLength_sol__0.txt @@ -1,18 +1,20 @@ -Loop condition at i < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#36) should use cached array length instead of referencing `length` member of the storage array. +Loop condition `j < array.length` (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#109) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at i_scope_22 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#166) should use cached array length instead of referencing `length` member of the storage array. +Loop condition `i < array.length` (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#161) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at j_scope_11 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#108) should use cached array length instead of referencing `length` member of the storage array. +Loop condition `i < array.length` (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#172) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at i_scope_6 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#79) should use cached array length instead of referencing `length` member of the storage array. +Loop condition `j < array.length` (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#126) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at i_scope_21 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#160) should use cached array length instead of referencing `length` member of the storage array. +Loop condition `k < array2.length` (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#133) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at k_scope_9 < array2.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#98) should use cached array length instead of referencing `length` member of the storage array. +Loop condition `i < array.length` (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#68) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at k_scope_17 < array2.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#132) should use cached array length instead of referencing `length` member of the storage array. +Loop condition `k < array2.length` (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#99) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at j_scope_15 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#125) should use cached array length instead of referencing `length` member of the storage array. +Loop condition `i < array.length` (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#167) should use cached array length instead of referencing `length` member of the storage array. -Loop condition at i_scope_4 < array.length (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#67) should use cached array length instead of referencing `length` member of the storage array. +Loop condition `i < array.length` (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#37) should use cached array length instead of referencing `length` member of the storage array. + +Loop condition `i < array.length` (tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol#80) should use cached array length instead of referencing `length` member of the storage array. diff --git a/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol b/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol index 704d6bed9..ea3c4120e 100644 --- a/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol +++ b/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol @@ -9,6 +9,7 @@ contract CacheArrayLength S[] array; S[] array2; + uint public x; function h() external { @@ -167,5 +168,10 @@ contract CacheArrayLength { this.h_view(); } + // array not modified and it cannot be changed in a function call since x is a public state variable + for (uint i = 0; i < array.length; i++) // warning should appear + { + this.x(); + } } } \ No newline at end of file diff --git a/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol-0.8.17.zip b/tests/e2e/detectors/test_data/cache-array-length/0.8.17/CacheArrayLength.sol-0.8.17.zip index dafdfc43167f9eb622fed98bdc69e91d02f89dfa..c5cb9f283c8f9b19a05070afca2c3bc14cd981fd 100644 GIT binary patch delta 9472 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 S007AQlW-zT2Gk?~0002!U~$j@ delta 8829 zcmV-@B7)t(O2S1OP)h>@KL7#%4gfHxuU4LDj71P4005BS0RSkI|0FAsMkIeHuM4|1 zr>p70vUIi&m#lTS%bRkW^18>VC634?{F8I(Ws95(o*S@eqa>m6`+4cYD{n3+OKCg4 zV+~>et|k8)1Sf01tdnXP zWjELHk8Kt%!tZ*_p~)3tw{p{rswbAx||H+vbf7+4t}e4l>%ZYEeZ~X#am68#MZ*HX6b+Xymdbt7n!*7 z@Cdc354{~keBgzo!li1}cRN_@)XT?_oGf%*(NEp+bvW?OUZ2v5y;G3{KI|g+OD9Ts7muWRQAro8a!$(D+iv^;L4C7+4SO3@sBoPtU+@3qq(2} zv0Q)TxN#b?{n#tL-YI|5TT(MZ3LOeNeR<#O9S)4h7uuqZ=6TJUX~)zSw#psG2{ru( zCl^fPd)(7!&X9YfRcbOlIT@5Bq+UvadS*nJXqN?bRA9^4xJjv)LyFWU!-2kd#=*_t>;*tw!$W^3tSpg7p-sq&PYa1tnSB%IANtuP04rX7Ad$`+3kh zt=p3QuebqJXqAPx$OhdUEnNNA3`Fp!FoeInkSGd z)b5SYN~E23gb;r=W2?lcbBuVwZ=-jRFzd@=a-&UE!?X5L;;4W$Vt5x$P7VC=BX&T^ z;%s4_^9kmuhF78{o7lQDTahm}Bu`;$>inp~Le3Q>vXeBiZOV=>5<`jgQnc)BJ)|j>OUUkkkp_mVtw$|M5A1R zxBSyM)v13)g@rPie>gEc3_7-z5>NL2ro-kTosD6YvC6N4G z?-eYg@&JNEyEbb~iU-H@S?a9Wral10)@8kkr`NiQ5QFe!h=cLj6f6nk*&|hgU%v7TRCo6`$R!F8U`RUBxrU^kt89 z%{LxWs3omiqgR2c7P0zKewmuyjbQ954m92MG{0P>af=(R z9v$7IVWP_5-wPRrQHYQKiya6W1_#a2Q!gVaMc37)r!8;@-%?@1t*fMK#|EzE&Q^{8 zd+R#$1wM68mJW-mCT*W|K7Zr4;Mjnb?;(FOeU0TCE2#1W{x;(A?P@gx5+UHSosQCm zd$n*}el3PnlH9P;~G$wMBYrt;=QxUi&vS^=&oeR%N?7rbtkLs2UuxClsTFP ztv4(OlLz{z5eDzEqISf`Tnq^)%%$#%j3@%4sLaNeEn3TKezo7578#9UB;#3Ez_W%z7+WV*4|UOl?IRNjJTbB(UCS4H-;Q0 z@HYWIS!)>LYi|IQBQ)!<(3xGG>| zFIJ<2vc9@LWG8__!|C}S^c+4ytM)r`B9xBHS$AHVyOtAOAbON}jXulzpOJ6@Q!IDzQ&h>WdtorsL;s`3qzsG9DReHyuW5hOBCBJs zB3^`KO_JsHL<8oD8Fpt((=}#sRjRHZ&T@a z4S<1F+XfB*WNdyj;CnK!^HP6LVaTSkvC<-CYJWaF&5BsPL#LJ;@D2dPV;#RgK-^5M zJuQ%Pdu+OyTI%=IB99To$tD0=bdMWG>aVBPt8^NkKS#Ka%II>OCHQyaDhciO1t@aP z3qn0G!mvM&1Z5o5j{+|LhW2nlvh<^GS!xwJBKsayHfbavs7Try{&#;&P~ir+FMV4$l1&Ayo$Jbxxmzh@D}_=>tvzOhuqT?5_I3eL>tRF`9O)6kJlNH{MuW`y z7bRF*s334=R9%bvo}PdBrh7&I?BV(_Gvo?oPO})Jk2@I58>aOuDEwrWqo54>DS6H) zsEu+;d~NMW)5hWk7xv&kZeAcFd!V}a_3p}=7zxb>0hzYa9Zmq|Uqr*68|JNY6ZFwP z)ld?<85ap&3_y$pkoQRz!MAqYx80||mx5$R6TsE~rICvx#)^N1-FJ$<-D1dXSX5Dz zNRJ&~r&uCMpk(C5J^H{>aVe5}XL0uR($|;Q05+(hY2LmF-}!%<)ZnvPAl|+>!?gNJ);-?g%dh(Mct-HR+ol-l_iAms7bA&`lgP!) z1c>y|D0CP%x6Kd*CLfLqz=VgaR&)U|z!}CWhA5nCGs&Dm!W5Wy(tYe!iWri#+S7g# zel6;Xc>NqtaG*-*pZY$0L3Rg=v90g!8ppKdGy(9p&KM_{H zqa}T)s8UBemNXd!;VWB}IT?prm?KC)h4S!itXVl#ZRD7VMAh%d7BWbsA9rI<7i`lL zx^SDxXqbO=N-HoN_c9uCwI)fvYKqPyhFmZJchfQ~<~bz5z`4r6Z?%s=tQN+3h(WC& zjo1BjO-(_#xD6Yr{7yh!YQXw^`d)_*$l8Oo>xCzo3j$s5XAVliH?NvfiFs(be$?@8 z8!Tmu{)(0cq<-%X2MELI?V>syUq4V+WOR5PBg%h($q7i;VtgBmV8mmZ1ntsuFUCBC z*idPH1SRe1mN&teqCWJSKZyssQVu(`AWX~lftM$(lfM91I9%CnY~hI1OKqX$j2u^| z0nWzwb@pX-zph7aeTCOLu3$UM@v?syNz*uyA|SRvH`Ie}7K5Wcsgv<_osbwvsP`CTm6iQ?I2 z1$TIf6Llxt{3;CIre!iz*|Iyj|E65n%;!XZl-vTZUrgo%k~G*8f^WeF#!%%z;_fkn<76us>o2hOZaz5vp0eM?F9XmnooL1U zl0dAmRvDLG?oRCEzPT{pTKm04KC$q?0;Ov({uPWh8`v)KMYDqKy-&uJ#U$Q-ntAua z^F#<3-(N+Cmvgo6fBk5p{|w?Y**|}*69JqPf*5a)7}S8i+?)6{^>K-UBR(NXw2X!o z;+N{vpKWjOVC_o?>%#~3c_Wly(qPI6Gcs2Pz75P$Hte3f>e^o;mC5q{LAJ07Ehh?e z-{`0;+uQCoFclO2Tc(>r;D#&`m?#>Q2RTh9d`I%Rf}Z85rRM zxmazXf5wIR4@&u^@S<}LDp=YuMN}fh48K1Vh1ju9>@Zt{U`kR4Z#4~lI0PqM#Qg+R zJPbr_9T#nmUjHh(v>WlaBWQn9mP8=QVycc;1VikqpDfEcCbYk%ULU!s=md2a7hz^b zZF&gR)`!pXw_ilD1|3_hd78iW#L$Q_sxB5N5rBGsirZAB!^x|4&jZ*u*#y)uc3o@~ z7UL@aU28DEek0V9N&3nk{rh10QvZ5KAXHT94%k5z#J}UP}4o8M|6z@3H?3_4AU5+clreSiD?85wj z%3wviqXkzkMZ-mjzqfh&?L2xLqo5`T__7cxKKtZ4eyDl!SW~N+_4P#H`32z99tB%2 z7XcRuuK=(jAo727I5s0|&t6R<3??ad>6Kl#HMqDz#)(l}WF!r}UcVQ2&zS*>Ap|p+ zvDMo<;h8Piu0m=Sw`2OV#Pgx+@`+ieFEfp}hWXAqc`5x zmSbli86VGX#Q3cSu_|B!Iv?dzJA@bP3^ov%4DS&)7j3v4FzmW`K~0w1J*=(S*FD46 z9Pg};uC4c$r)G%C8W!I&8_vfLyjaaQ@a0K9mA5wQgjM0&_@?#V1oqiEk~<~>1Zx$@ zu2M8^AMk%o`F@$gfdkQGqIX0i;jiz_am9>iwlwEULM_FmP}ENX|1ApI156o)mR*h$ z6V~E}sk&jLGLVxu>Dsd<#@<=x=afl0bF`um*TwUvoxgs%b1P1Otw~ttP@T#_zg3k^ zoEcV?h~8qxr*>#5_Fj1he*_a}E#^z*1(-!w9ejU4{c}n1aAH#Rju!J9)EDIFAwuKt zY}-PHp#dFf@y-RXYqi+n6CdJ17&6m2z{<|dZL37Vs|4DlXidr@avTIa1yBcUdv;w? zSwRs!8)1QwHr&6Wz}ciOoM}R-lCk5v8SEMy4}obEPssuuu%enQo8RKY5FoJK?pV>8 zgb{ygPgeMPEmZ7ql^us?WP<$Wx)6kDBsr)T*RRa9cBnlaGX#(+6TU(Wr-s-zP1Z7n z*(;ogE&D+f&R?<);-FxySMV%c)q`(ah{|Zy2yaDRBhGkGel7axSj)BY0c~EN5Ei{y zcD4gkT%WSB)2sB>u7p=V%t~+q##c&EXBvNjA5YD^EHmv*d<+3~TgPtBat?sV<9RUC ziwM*HWN;~heX#0DF`cI)q=J)5+tE9Ozu~$*OEi8v2}LR*v`o$iHADIC2QIZ~cvtbb zRIs~bbMDbZ2-qZ7uOI$k0T!D95#4sTSF9!A3H@Dai`jEX6+Vlb#k2bI{c1R{7gm4W zY9!-rND%CuyWKV^P^8rybfeZIrdaxH%$A@OlFCG;*VEG1t7FR~VMC-fy-(TTSC_(%3E_Q8sO3;uA(CJ03`$51c%?}3gMT37J0d5gp zhW5VjB8x#PMi93T6Sk*pT_xcqRb(@R?FrSSF0kPz6^~*;0{0RzU?6%VS6WKkly8j* zD+Npt*hGF^EwMY|=^*k`(hJjFdgG&(Om#fkB&r6)X>MF~bnd+kF?p0|q>F1TTcoe# zPJpv=OyoUW%@bm~J!s>8BbI;l(N!{O2gi)8#Fn2qf7ve&xrN&dkJ#qMz>F_D7dWCOVH^Assa6uj6c`ao4;8G2UEZpe*Ihx;;f* z7yy*2DwQ%WKC=}<0#Z8wx^D00y98-cE>89Y%w}>_1$Ns?rTNS~1DJn5uQ3=IH_p}5 z4leKli{^F|iS(N;@ZV%FRQLs}`sK*G@Su6o9;gcVWLq5GL5pw46+>9RCPm0!6hRtN z!1U8SVkOAA+qaePYl27~$XJ=IPqSWogCm?jHn`^Gm~oh~W)lFJx4otIpcYy zEmOh0WQ{a@oqDJm>8xFuIaTt@ikV6ZjbcMaZCxo-MxAzYCfIhEy-~eo zu9ap*8IwPpm&kTF09cN)4Al$|_dLA&p=!MgxI&(}yx4zfvN{SYS4JalayR|37Pu@w zhYZh@C^l#X0ERflEJ(&r4CUmzl#IyGyrk$y>1i%Q6#Qm%QxY^o;A^=@<2f~5@lDME z5?)k}M?r4T#x%DYxjHEA3|&e? zoxl~|=iqXKNUEOZL-bpQ$7J!N072wS^7Kl@^*KC2@3z3GO0ZZev&DIdB!velssn>R z;0%9CXZ|lQucjqI;be?`k`_3m_LHIwUBjQo3snJ&PX+%EBODsK8b4iQ-yMI}>v8eIiF)i&^)$!}O}#hpy~ zU}3nx9vU`TKJ!@Q2nE!aG=Kf)yH1xpa)=?4Gs#fpGH6V^deJu=xFmlW zur7Px=4k6RKQ9pKO%#8p5@fom^4 zbHlf?rZNt)Ii8ZVn)X;QXk$eLCitnQ3k_nK5xm?O0D~0wXzK~1t6Va|?8BKa|jWTl4cWZS|aUGFNxKrjVHiW7mBW)j?Bvo}g*~{Y6i;aH(+xS;{ zQ2q*npUiYjBJZynuzw2`>k}HTL)B-iAaoLXmzOHr(29OI<(#fFLsjB+8K_NVN>c-= zT9I?{7|9E3E!S>$dO?d{9At;p9GE|}&kjD|LyQ&08%;{p<-j%~Aww!;V&CZ=L3v20-D&$p-4=#pjc;p#5Qd)31b|I>pBexeM zJzOKiUMsHrC?Y*U@5{A0_G}MxsA{())ju1A8HL04^-Pc5>R_?el1>qEH8Xy&CqBcK z-`W^(i~JEGgqdpzb~nWg?6|+dZ;DkYc5B1am!|5Hw7= zx139{6M#E1HfLSPdid*EfzPeThZFwFii_h2PFuW)ygAc^DwEeuxo_C#f=^qg{mPwI$g5`y!RZEfl@I#NQ5*4;w;ihPszwjGH}5CRpoP>v@E=Qi6YC1vM`XOZ?e_vF17Q zq`67JT1)(Dq;}SEFtfdBt!LCw6s>{akJk>FFnr)1AkJNo&qf`qXo*C=eFhILSM~PL z0?F6CO`o#Y#*2q0fnG>+ch-0d zkIoz}(@UbO^uvD*^T{o@)>@IAT3;?f&rkz#{B_QaBn8c#H0QIDbHI7Qcv+t5NSeQd zqT+G*igJN>%~cmJ%4z=jhLjBj@U_;8M?W{Ql63Y7IqhO0H2XCE8_uL~&jm?TWRxDs z&$*VB!+**k9W{7{&Yo_o;^vH!{Koek*Y{nPutlia63KrqXrwP0g64|!HXO*?$Rldl z$3bbI@#Z9*;$8BI|4p@47^yZAM`082N4ov}>75Ec#e^dbOA5Lh>1LI}QFrHx(zd>@x4coT2D_Yf;^RoIJ3aMcf8$!|C$Z+1LHr(Xgc@@mwMx zvZozI{Sou0KelaJ3~1Q)4HF9O^$P(36pgfY~>K%ZUw zK%tq{t;|xn{fOZfr%<51Fl`kY_UtvwfwK^CSw5c+@*`xa;Jt^p-q?CTo-d^(*3Qnw-212Y(8%EUrH@Mlb%q; zOrL)(sTsoi6WFQo?z(Amz*;G3taN8eRt*qRZW7fm8%Lc6QA^F>Ep<3GfXJ3gL(&W@ z4F9!*jUm9&gwp2JRbzo&?8p_^DcWqqMXBAuxpp4^9!L2g7{4@)%kp$H_Yrt>jcr}~ zflk8&RFk{=tNm92s*qA4)tl`)jzITLo!);-iYA<|O?IMCf~5~bAb$|wioPnyKRsrn z6ls&bS7AYv=1NahzBN@zpah9JS>nE3bEmc(sf4Dz+P@_C517p# zzAu&`R8y3+irIM*$$n;|pS^znVFH&C2A(M=B8GvLe#cTDX}+OK#7{2nVvAf{n}mO= z=`mC{Iof5t?K#Va{v6(&UrKL?z>xt{{jFz6Lfb<~x8ZD8H-4@x*Xio6uTF~=Coz+b z?7n$I|KTAY)_$TLoBg09O+}0Vd4e3PI@gWz7GdNQXjX!iP(yE|)__=~QG>UV>k+R% zz>p;$&uBhrC>+LFhw$<}LcP43rS z(0OR`i&aYCu?H0Nc6InA5FaHj^tT##MvKjm0L#F+p2+y?k8-x;H@VkKv^#-2m3L4r`!z&$5ncI&v1WM=hGQt>075;p3m~Q#3Xj0inXZYAfM)Pj7K=Ycp=zi zmuEN^=JZ%<*(IrfwyPrbkIRO|cQ4G(Q4^cHHpUTT-Z#4tD}A!yuZ>zcEKch59SxLJ zp`A}9E1$>K7PFy%*4TzLb?Dx?f#vV-~3{gk*{I7q5xZ0T)(NMPw zvfn0Z9yd2orpJ+8O|F3X{hFZ9!5%)zJPH;Ar#?=zb3fsb8xq3nWw4h1{T=^1TLYnv z)Ad4H3X{^&a02{qGG|Xx6@D#5ai1p~j$dZuBnYA@ z3OWy<1e5LJc(B!iYo|C?XpBV=A^-r8;FInoOa@jW00000x3~MK From e0233a70efe4b12f16458a9a648dbd65a1b61126 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 22:23:19 +0000 Subject: [PATCH 215/220] Bump actions/setup-python from 3 to 4 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 3 to 4. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/black.yml | 2 +- .github/workflows/ci.yml | 2 +- .github/workflows/linter.yml | 2 +- .github/workflows/pylint.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/black.yml b/.github/workflows/black.yml index df51a3ddf..33a1666b2 100644 --- a/.github/workflows/black.yml +++ b/.github/workflows/black.yml @@ -32,7 +32,7 @@ jobs: fetch-depth: 0 - name: Set up Python 3.8 - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: 3.8 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d99aa49fc..b59aacd66 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,7 +55,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} - name: Install dependencies diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index f972cbcd1..b352a8301 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -33,7 +33,7 @@ jobs: fetch-depth: 0 - name: Set up Python 3.8 - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: 3.8 diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 983c176a9..207f98eac 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -27,7 +27,7 @@ jobs: fetch-depth: 0 - name: Set up Python 3.8 - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: 3.8 From f22836c5f06a96b37b92c50dd1b32e8c05cac110 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 22:23:24 +0000 Subject: [PATCH 216/220] Bump pypa/gh-action-pypi-publish from 1.8.6 to 1.8.7 Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.6 to 1.8.7. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.6...v1.8.7) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 529752f80..f7d9ff9e7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -44,7 +44,7 @@ jobs: path: dist/ - name: publish - uses: pypa/gh-action-pypi-publish@v1.8.6 + uses: pypa/gh-action-pypi-publish@v1.8.7 - name: sign uses: sigstore/gh-action-sigstore-python@v1.2.3 From 9ecc66ddf81cb4e0bfe19dd53197c25634467401 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Wed, 5 Jul 2023 21:59:17 -0500 Subject: [PATCH 217/220] fix regression that caused retdata to be flagged --- .../unchecked_low_level_return_values.py | 62 ++++++++++++++++-- .../operations/unused_return_values.py | 6 +- .../0.7.6/unchecked_lowlevel.sol | 8 ++- .../0.7.6/unchecked_lowlevel.sol-0.7.6.zip | Bin 2436 -> 2753 bytes 4 files changed, 64 insertions(+), 12 deletions(-) diff --git a/slither/detectors/operations/unchecked_low_level_return_values.py b/slither/detectors/operations/unchecked_low_level_return_values.py index 0537ebbf2..c1fb1a868 100644 --- a/slither/detectors/operations/unchecked_low_level_return_values.py +++ b/slither/detectors/operations/unchecked_low_level_return_values.py @@ -1,15 +1,24 @@ """ Module detecting unused return values from low level """ -from slither.detectors.abstract_detector import DetectorClassification -from slither.detectors.operations.unused_return_values import UnusedReturnValues +from typing import List + +from slither.core.cfg.node import Node from slither.slithir.operations import LowLevelCall -from slither.slithir.operations.operation import Operation + +from slither.core.declarations.function_contract import FunctionContract +from slither.core.variables.state_variable import StateVariable +from slither.detectors.abstract_detector import ( + AbstractDetector, + DetectorClassification, + DETECTOR_INFO, +) +from slither.utils.output import Output -class UncheckedLowLevel(UnusedReturnValues): +class UncheckedLowLevel(AbstractDetector): """ - If the return value of a send is not checked, it might lead to losing ether + If the return value of a low-level call is not checked, it might lead to losing ether """ ARGUMENT = "unchecked-lowlevel" @@ -38,5 +47,44 @@ If the low level is used to prevent blocking operations, consider logging failed WIKI_RECOMMENDATION = "Ensure that the return value of a low-level call is checked or logged." - def _is_instance(self, ir: Operation) -> bool: # pylint: disable=no-self-use - return isinstance(ir, LowLevelCall) + @staticmethod + def detect_unused_return_values(f: FunctionContract) -> List[Node]: + """ + Return the nodes where the return value of a call is unused + Args: + f (Function) + Returns: + list(Node) + """ + values_returned = [] + nodes_origin = {} + for n in f.nodes: + for ir in n.irs: + if isinstance(ir, LowLevelCall): + # if a return value is stored in a state variable, it's ok + if ir.lvalue and not isinstance(ir.lvalue, StateVariable): + values_returned.append(ir.lvalue) + nodes_origin[ir.lvalue] = ir + + for read in ir.read: + if read in values_returned: + values_returned.remove(read) + + return [nodes_origin[value].node for value in values_returned] + + def _detect(self) -> List[Output]: + """Detect low level calls where the success value is not checked""" + results = [] + for c in self.compilation_unit.contracts_derived: + for f in c.functions_and_modifiers: + unused_return = UncheckedLowLevel.detect_unused_return_values(f) + if unused_return: + + for node in unused_return: + info: DETECTOR_INFO = [f, " ignores return value by ", node, "\n"] + + res = self.generate_result(info) + + results.append(res) + + return results diff --git a/slither/detectors/operations/unused_return_values.py b/slither/detectors/operations/unused_return_values.py index 80be98b45..783a44807 100644 --- a/slither/detectors/operations/unused_return_values.py +++ b/slither/detectors/operations/unused_return_values.py @@ -101,10 +101,8 @@ contract MyConc{ def _detect(self) -> List[Output]: """Detect high level calls which return a value that are never used""" results = [] - for c in self.compilation_unit.contracts: - for f in c.functions + c.modifiers: - if f.contract_declarer != c: - continue + for c in self.compilation_unit.contracts_derived: + for f in c.functions_and_modifiers: unused_return = self.detect_unused_return_values(f) if unused_return: diff --git a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol b/tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol index 96712b077..cd6f78e98 100644 --- a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol +++ b/tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol @@ -4,8 +4,14 @@ contract MyConc{ } function good(address payable dst) external payable{ - (bool ret, bytes memory _) = dst.call{value:msg.value}(""); + (bool ret, ) = dst.call{value:msg.value}(""); require(ret); } + function good2(address payable dst) external payable{ + (bool ret, ) = dst.call{value:msg.value}(""); + if (!ret) { + revert(); + } + } } diff --git a/tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol-0.7.6.zip b/tests/e2e/detectors/test_data/unchecked-lowlevel/0.7.6/unchecked_lowlevel.sol-0.7.6.zip index 530d247c4f4af07568e1b56c088632f1a7807cb3..bccb47182ef5c2d7ed86af2a327775c317856a86 100644 GIT binary patch delta 2487 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 From 97f817712fbe35d5d118cf1caa54075f9d660528 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 22:35:07 +0000 Subject: [PATCH 218/220] Bump actions/upload-pages-artifact from 1 to 2 Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 1 to 2. - [Release notes](https://github.com/actions/upload-pages-artifact/releases) - [Commits](https://github.com/actions/upload-pages-artifact/compare/v1...v2) --- updated-dependencies: - dependency-name: actions/upload-pages-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index f6d66aa0a..625cafe4f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -37,7 +37,7 @@ jobs: - run: pip install -e ".[doc]" - run: pdoc -o html/ slither '!slither.tools' #TODO fix import errors on pdoc run - name: Upload artifact - uses: actions/upload-pages-artifact@v1 + uses: actions/upload-pages-artifact@v2 with: # Upload the doc path: './html/' From 65aaafa0c61f1b5dd8c8ce15e945bae3eebf12c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 22:38:31 +0000 Subject: [PATCH 219/220] Bump pypa/gh-action-pypi-publish from 1.8.7 to 1.8.8 Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.7 to 1.8.8. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.7...v1.8.8) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f7d9ff9e7..24f04ee87 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -44,7 +44,7 @@ jobs: path: dist/ - name: publish - uses: pypa/gh-action-pypi-publish@v1.8.7 + uses: pypa/gh-action-pypi-publish@v1.8.8 - name: sign uses: sigstore/gh-action-sigstore-python@v1.2.3 From 60a67680b06ec21311158a115f4d4a7d97a678cc Mon Sep 17 00:00:00 2001 From: Simone Date: Tue, 18 Jul 2023 14:07:51 +0200 Subject: [PATCH 220/220] Compile after the test was added --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5cf02136b..ae7951c7f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -96,8 +96,8 @@ For each new detector, at least one regression tests must be present. #### Adding parsing tests 1. Create a test in `tests/e2e/solc_parsing/` -2. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --compile`. This will compile the artifact in `tests/e2e/solc_parsing/compile`. Add the compiled artifact to git. -3. Update `ALL_TESTS` in `tests/e2e/solc_parsing/test_ast_parsing.py`. +2. Update `ALL_TESTS` in `tests/e2e/solc_parsing/test_ast_parsing.py`. +3. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --compile`. This will compile the artifact in `tests/e2e/solc_parsing/compile`. Add the compiled artifact to git. 4. Run `python tests/e2e/solc_parsing/test_ast_parsing.py --generate`. This will generate the json artifacts in `tests/e2e/solc_parsing/expected_json`. Add the generated files to git. 5. Run `pytest tests/e2e/solc_parsing/test_ast_parsing.py` and check that everything worked.