Improve support for legacy ast

pull/720/head
Josselin 4 years ago
parent a7d98ce7b0
commit 84c30e8213
  1. 16
      slither/solc_parsing/declarations/event.py
  2. 10
      slither/solc_parsing/declarations/function.py
  3. 14
      slither/solc_parsing/declarations/modifier.py
  4. 7
      tests/ast-parsing/comment-all.sol
  5. 5
      tests/ast-parsing/expected/comment-0.4.0-legacy.json
  6. 5
      tests/ast-parsing/expected/comment-0.4.1-legacy.json
  7. 5
      tests/ast-parsing/expected/comment-0.4.10-legacy.json
  8. 5
      tests/ast-parsing/expected/comment-0.4.11-legacy.json
  9. 5
      tests/ast-parsing/expected/comment-0.4.12-compact.json
  10. 5
      tests/ast-parsing/expected/comment-0.4.12-legacy.json
  11. 5
      tests/ast-parsing/expected/comment-0.4.13-compact.json
  12. 5
      tests/ast-parsing/expected/comment-0.4.13-legacy.json
  13. 5
      tests/ast-parsing/expected/comment-0.4.14-compact.json
  14. 5
      tests/ast-parsing/expected/comment-0.4.14-legacy.json
  15. 5
      tests/ast-parsing/expected/comment-0.4.15-compact.json
  16. 5
      tests/ast-parsing/expected/comment-0.4.15-legacy.json
  17. 5
      tests/ast-parsing/expected/comment-0.4.16-compact.json
  18. 5
      tests/ast-parsing/expected/comment-0.4.16-legacy.json
  19. 5
      tests/ast-parsing/expected/comment-0.4.17-compact.json
  20. 5
      tests/ast-parsing/expected/comment-0.4.17-legacy.json
  21. 5
      tests/ast-parsing/expected/comment-0.4.18-compact.json
  22. 5
      tests/ast-parsing/expected/comment-0.4.18-legacy.json
  23. 5
      tests/ast-parsing/expected/comment-0.4.19-compact.json
  24. 5
      tests/ast-parsing/expected/comment-0.4.19-legacy.json
  25. 5
      tests/ast-parsing/expected/comment-0.4.2-legacy.json
  26. 5
      tests/ast-parsing/expected/comment-0.4.20-compact.json
  27. 5
      tests/ast-parsing/expected/comment-0.4.20-legacy.json
  28. 5
      tests/ast-parsing/expected/comment-0.4.21-compact.json
  29. 5
      tests/ast-parsing/expected/comment-0.4.21-legacy.json
  30. 5
      tests/ast-parsing/expected/comment-0.4.22-compact.json
  31. 5
      tests/ast-parsing/expected/comment-0.4.22-legacy.json
  32. 5
      tests/ast-parsing/expected/comment-0.4.23-compact.json
  33. 5
      tests/ast-parsing/expected/comment-0.4.23-legacy.json
  34. 5
      tests/ast-parsing/expected/comment-0.4.24-compact.json
  35. 5
      tests/ast-parsing/expected/comment-0.4.24-legacy.json
  36. 5
      tests/ast-parsing/expected/comment-0.4.25-compact.json
  37. 5
      tests/ast-parsing/expected/comment-0.4.25-legacy.json
  38. 5
      tests/ast-parsing/expected/comment-0.4.26-compact.json
  39. 5
      tests/ast-parsing/expected/comment-0.4.26-legacy.json
  40. 5
      tests/ast-parsing/expected/comment-0.4.3-legacy.json
  41. 5
      tests/ast-parsing/expected/comment-0.4.4-legacy.json
  42. 5
      tests/ast-parsing/expected/comment-0.4.5-legacy.json
  43. 5
      tests/ast-parsing/expected/comment-0.4.6-legacy.json
  44. 5
      tests/ast-parsing/expected/comment-0.4.7-legacy.json
  45. 5
      tests/ast-parsing/expected/comment-0.4.8-legacy.json
  46. 5
      tests/ast-parsing/expected/comment-0.4.9-legacy.json
  47. 5
      tests/ast-parsing/expected/comment-0.5.0-compact.json
  48. 5
      tests/ast-parsing/expected/comment-0.5.0-legacy.json
  49. 5
      tests/ast-parsing/expected/comment-0.5.1-compact.json
  50. 5
      tests/ast-parsing/expected/comment-0.5.1-legacy.json
  51. 5
      tests/ast-parsing/expected/comment-0.5.10-compact.json
  52. 5
      tests/ast-parsing/expected/comment-0.5.10-legacy.json
  53. 5
      tests/ast-parsing/expected/comment-0.5.11-compact.json
  54. 5
      tests/ast-parsing/expected/comment-0.5.11-legacy.json
  55. 5
      tests/ast-parsing/expected/comment-0.5.12-compact.json
  56. 5
      tests/ast-parsing/expected/comment-0.5.12-legacy.json
  57. 5
      tests/ast-parsing/expected/comment-0.5.13-compact.json
  58. 5
      tests/ast-parsing/expected/comment-0.5.13-legacy.json
  59. 5
      tests/ast-parsing/expected/comment-0.5.14-compact.json
  60. 5
      tests/ast-parsing/expected/comment-0.5.14-legacy.json
  61. 5
      tests/ast-parsing/expected/comment-0.5.15-compact.json
  62. 5
      tests/ast-parsing/expected/comment-0.5.15-legacy.json
  63. 5
      tests/ast-parsing/expected/comment-0.5.16-compact.json
  64. 5
      tests/ast-parsing/expected/comment-0.5.16-legacy.json
  65. 5
      tests/ast-parsing/expected/comment-0.5.17-compact.json
  66. 5
      tests/ast-parsing/expected/comment-0.5.17-legacy.json
  67. 5
      tests/ast-parsing/expected/comment-0.5.2-compact.json
  68. 5
      tests/ast-parsing/expected/comment-0.5.2-legacy.json
  69. 5
      tests/ast-parsing/expected/comment-0.5.3-compact.json
  70. 5
      tests/ast-parsing/expected/comment-0.5.3-legacy.json
  71. 5
      tests/ast-parsing/expected/comment-0.5.4-compact.json
  72. 5
      tests/ast-parsing/expected/comment-0.5.4-legacy.json
  73. 5
      tests/ast-parsing/expected/comment-0.5.5-compact.json
  74. 5
      tests/ast-parsing/expected/comment-0.5.5-legacy.json
  75. 5
      tests/ast-parsing/expected/comment-0.5.6-compact.json
  76. 5
      tests/ast-parsing/expected/comment-0.5.6-legacy.json
  77. 5
      tests/ast-parsing/expected/comment-0.5.7-compact.json
  78. 5
      tests/ast-parsing/expected/comment-0.5.7-legacy.json
  79. 5
      tests/ast-parsing/expected/comment-0.5.8-compact.json
  80. 5
      tests/ast-parsing/expected/comment-0.5.8-legacy.json
  81. 5
      tests/ast-parsing/expected/comment-0.5.9-compact.json
  82. 5
      tests/ast-parsing/expected/comment-0.5.9-legacy.json
  83. 5
      tests/ast-parsing/expected/comment-0.6.0-compact.json
  84. 5
      tests/ast-parsing/expected/comment-0.6.0-legacy.json
  85. 5
      tests/ast-parsing/expected/comment-0.6.1-compact.json
  86. 5
      tests/ast-parsing/expected/comment-0.6.1-legacy.json
  87. 5
      tests/ast-parsing/expected/comment-0.6.10-compact.json
  88. 5
      tests/ast-parsing/expected/comment-0.6.10-legacy.json
  89. 5
      tests/ast-parsing/expected/comment-0.6.11-compact.json
  90. 5
      tests/ast-parsing/expected/comment-0.6.11-legacy.json
  91. 5
      tests/ast-parsing/expected/comment-0.6.12-compact.json
  92. 5
      tests/ast-parsing/expected/comment-0.6.12-legacy.json
  93. 5
      tests/ast-parsing/expected/comment-0.6.2-compact.json
  94. 5
      tests/ast-parsing/expected/comment-0.6.2-legacy.json
  95. 5
      tests/ast-parsing/expected/comment-0.6.3-compact.json
  96. 5
      tests/ast-parsing/expected/comment-0.6.3-legacy.json
  97. 5
      tests/ast-parsing/expected/comment-0.6.4-compact.json
  98. 5
      tests/ast-parsing/expected/comment-0.6.4-legacy.json
  99. 5
      tests/ast-parsing/expected/comment-0.6.5-compact.json
  100. 5
      tests/ast-parsing/expected/comment-0.6.5-legacy.json
  101. Some files were not shown because too many files have changed in this diff Show More

@ -29,13 +29,15 @@ class EventSolc:
self._elemsNotParsed = elems["parameters"]
else:
self._event.name = event_data["attributes"]["name"]
elems = event_data["children"][0]
assert elems["name"] == "ParameterList"
if "children" in elems:
self._elemsNotParsed = elems["children"]
else:
self._elemsNotParsed = []
for elem in event_data["children"]:
# From Solidity 0.6.3 to 0.6.10 (included)
# Comment above a event might be added in the children
# of an event for the legacy ast
if elem["name"] == "ParameterList":
if "children" in elem:
self._elemsNotParsed = elem["children"]
else:
self._elemsNotParsed = []
@property
def is_compact_ast(self) -> bool:

@ -258,8 +258,14 @@ class FunctionSolc:
returns = self._functionNotParsed["returnParameters"]
else:
children = self._functionNotParsed[self.get_children("children")]
params = children[0]
returns = children[1]
# It uses to be
# params = children[0]
# returns = children[1]
# But from Solidity 0.6.3 to 0.6.10 (included)
# Comment above a function might be added in the children
child_iter = iter([child for child in children if child[self.get_key()] == "ParameterList"])
params = next(child_iter)
returns = next(child_iter)
if params:
self._parse_params(params)

@ -37,7 +37,11 @@ class ModifierSolc(FunctionSolc):
params = self._functionNotParsed["parameters"]
else:
children = self._functionNotParsed["children"]
params = children[0]
# It uses to be
# params = children[0]
# But from Solidity 0.6.3 to 0.6.10 (included)
# Comment above a function might be added in the children
params = next(child for child in children if child[self.get_key()] == "ParameterList")
if params:
self._parse_params(params)
@ -60,9 +64,11 @@ class ModifierSolc(FunctionSolc):
self._function.is_implemented = False
if len(children) > 1:
assert len(children) == 2
block = children[1]
assert block["name"] == "Block"
# It uses to be
# params = children[1]
# But from Solidity 0.6.3 to 0.6.10 (included)
# Comment above a function might be added in the children
block = next(child for child in children if child[self.get_key()] == "Block")
self._function.is_implemented = True
self._parse_cfg(block)

@ -0,0 +1,7 @@
contract A{
/*** Events ***/
event E();
/*** Function ***/
function f() public{}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

@ -0,0 +1,5 @@
{
"A": {
"f()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n}\n"
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save