From c08191b1c1c7f7d8bfcfc11274268c0f086a41b4 Mon Sep 17 00:00:00 2001 From: Simone Date: Sat, 22 Apr 2023 17:38:58 +0200 Subject: [PATCH 1/2] 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 90905be4ee..741486fb33 100644 --- a/slither/visitors/slithir/expression_to_slithir.py +++ b/slither/visitors/slithir/expression_to_slithir.py @@ -622,7 +622,6 @@ def _post_unary_operation(self, expression: UnaryOperation) -> None: 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 e51cee61b37127921de14ef456ac4e92bf415dac Mon Sep 17 00:00:00 2001 From: Simone Date: Thu, 27 Apr 2023 14:45:52 +0200 Subject: [PATCH 2/2] 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 78aa8a2914..f038e0d0a0 100644 --- a/tests/e2e/solc_parsing/test_ast_parsing.py +++ b/tests/e2e/solc_parsing/test_ast_parsing.py @@ -451,6 +451,7 @@ def make_version(minor: int, patch_min: int, patch_max: int) -> List[str]: 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 0000000000..8381c16f7b --- /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 0000000000..b3f03c48d7 --- /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