Merge pull request #833 from crytic/dev-yul-slot-offset

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

@ -694,7 +694,7 @@ def parse_yul_identifier(root: YulScope, _node: YulNode, ast: Dict) -> Optional[
return Identifier(func.underlying) return Identifier(func.underlying)
# check for magic suffixes # check for magic suffixes
if name.endswith("_slot"): if name.endswith("_slot") or name.endswith(".slot"):
potential_name = name[:-5] potential_name = name[:-5]
var = root.function.contract.get_state_variable_from_name(potential_name) var = root.function.contract.get_state_variable_from_name(potential_name)
if var: if var:
@ -702,7 +702,7 @@ def parse_yul_identifier(root: YulScope, _node: YulNode, ast: Dict) -> Optional[
var = root.function.get_local_variable_from_name(potential_name) var = root.function.get_local_variable_from_name(potential_name)
if var and var.is_storage: if var and var.is_storage:
return Identifier(var) return Identifier(var)
if name.endswith("_offset"): if name.endswith("_offset") or name.endswith(".offset"):
potential_name = name[:-7] potential_name = name[:-7]
var = root.function.contract.get_state_variable_from_name(potential_name) var = root.function.contract.get_state_variable_from_name(potential_name)
if var: if var:

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

Loading…
Cancel
Save