|
|
@ -138,12 +138,17 @@ def _extract_assert(contracts: List[Contract]) -> Dict[str, Dict[str, List[Dict] |
|
|
|
""" |
|
|
|
""" |
|
|
|
ret: Dict[str, Dict[str, List[Dict]]] = {} |
|
|
|
ret: Dict[str, Dict[str, List[Dict]]] = {} |
|
|
|
for contract in contracts: |
|
|
|
for contract in contracts: |
|
|
|
functions_using_assert: Dict[str, List[Dict]] = defaultdict(list) |
|
|
|
functions_using_assert = [] # Dict[str, List[Dict]] = defaultdict(list) |
|
|
|
for f in contract.functions_entry_points: |
|
|
|
for f in contract.functions_entry_points: |
|
|
|
for node in f.all_nodes(): |
|
|
|
for v in f.all_solidity_calls(): |
|
|
|
if SolidityFunction("assert(bool)") in node.solidity_calls and node.source_mapping: |
|
|
|
if v == SolidityFunction("assert(bool)"): |
|
|
|
func_name = _get_name(f) |
|
|
|
functions_using_assert.append(_get_name(f)) |
|
|
|
functions_using_assert[func_name].append(node.source_mapping.to_json()) |
|
|
|
break |
|
|
|
|
|
|
|
# Revert https://github.com/crytic/slither/pull/2105 until format is supported by echidna. |
|
|
|
|
|
|
|
# for node in f.all_nodes(): |
|
|
|
|
|
|
|
# if SolidityFunction("assert(bool)") in node.solidity_calls and node.source_mapping: |
|
|
|
|
|
|
|
# func_name = _get_name(f) |
|
|
|
|
|
|
|
# functions_using_assert[func_name].append(node.source_mapping.to_json()) |
|
|
|
if functions_using_assert: |
|
|
|
if functions_using_assert: |
|
|
|
ret[contract.name] = functions_using_assert |
|
|
|
ret[contract.name] = functions_using_assert |
|
|
|
return ret |
|
|
|
return ret |
|
|
|