Skip to content

Commit

Permalink
Refactor to support the broken AST
Browse files Browse the repository at this point in the history
  • Loading branch information
smonicas committed Feb 20, 2024
1 parent c99d1ca commit c066ca3
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions slither/solc_parsing/slither_compilation_unit_solc.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,25 +56,25 @@ def _handle_import_aliases(
to_import = []
for symbol_alias in symbol_aliases:
if "foreign" in symbol_alias:
original_name = symbol_alias["foreign"]["name"]
to_import.append(original_name)
if "local" in symbol_alias:
if isinstance(symbol_alias["foreign"], dict) and "name" in symbol_alias["foreign"]:
if isinstance(symbol_alias["foreign"], dict) and "name" in symbol_alias["foreign"]:
original_name = symbol_alias["foreign"]["name"]
to_import.append(original_name)
if "local" in symbol_alias:
local_name = symbol_alias["local"]
import_directive.renaming[local_name] = original_name
# Assuming that two imports cannot collide in renaming
scope.renaming[local_name] = original_name

# This path should only be hit for the malformed AST of solc 0.5.12 where
# the foreign identifier cannot be found but is required to resolve the alias.
# see https://github.com/crytic/slither/issues/1319
elif symbol_alias["local"]:
raise SlitherException(
"Cannot resolve local alias for import directive due to malformed AST. Please upgrade to solc 0.6.0 or higher."
)
# This path should only be hit for the malformed AST of solc 0.5.12 where
# the foreign identifier cannot be found but is required to resolve the alias.
# see https://github.com/crytic/slither/issues/1319
elif symbol_alias["local"]:
raise SlitherException(
"Cannot resolve local alias for import directive due to malformed AST. Please upgrade to solc 0.6.0 or higher."
)

return to_import


class SlitherCompilationUnitSolc(CallerContextExpression):
# pylint: disable=no-self-use,too-many-instance-attributes
def __init__(self, compilation_unit: SlitherCompilationUnit) -> None:
Expand Down

0 comments on commit c066ca3

Please sign in to comment.